[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 请问此BAT代码怎么改成全盘搜索*.wim文件?

  此代码只能搜索根目录,或是子目录里边的boot.wim文件,怎么改成全盘搜索扩展名是wim的文件。这个代码还有个问题,就是goto home之后序号会递增,意思就是之前是1、2、3 goto之后变成4、5、6
  1. :home
  2. @echo off & setlocal enableDelayedExpansion
  3. cls
  4. for %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
  5. if exist "%%a:\sources\boot.wim" (
  6. set/a n+=1&echo !n!, %%a:\sources\boot.wim
  7. set ".!n!=%%a:\sources\boot.wim"
  8. )
  9. )
  10. set/p aa=选择:
  11. for %%a in ("!aa!") do set wim=!.%%~a!
  12. goto dism
复制代码

  1. @echo off
  2. for %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
  3.     if exist %%a:\ (
  4.         dir /s /b %%a\*.wim
  5.     )
  6. )
复制代码

TOP

回复 2# forfiles

此代码测试失败

TOP

本帖最后由 apang 于 2012-8-10 09:31 编辑
  1. :home
  2. @echo off & setlocal enableDelayedExpansion
  3. cls
  4. for %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
  5.   for /f "delims=" %%b in ('dir /a-d /b /s %%a:\*.wim 2^>nul') do (
  6.     set/a n+=1&echo !n!, %%b
  7.     set ".!n!=%%b"
  8.   )
  9. )
  10. set/p aa=选择:
  11. for %%a in ("!aa!") do set wim=!.%%~a!
  12. goto dism
  13. ......
  14. endlocal&goto :home
复制代码
当时你又没要求goto :home
你自己加了goto :home,又不适时endlocal,变量n才会一直增加的。

TOP

回复 4# apang

多谢apang大哥,问题解决了! 但又有个新的问题 代码:【Dism /Get-WimInfo /WimFile:%wim% 】命令执行成功后 却停在了【 || echo 输入错误&pause】这里,正常的应该跳到【Dism /Get-WimInfo /WimFile:%wim%>a.txt】以下的命令中,如果我去掉【||echo 输入错误&pause&&endlocal&goto :home】就能正常执行其他的命令!
  1. :home
  2. @echo off & setlocal enableDelayedExpansion
  3. cls
  4. for %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
  5.   for /f "delims=" %%b in ('dir /a-d /b /s %%a:\*.wim 2^>nul') do (
  6.     set/a n+=1&echo !n!, %%b
  7.     set ".!n!=%%b"
  8.   )
  9. )
  10. set/p aa=选择:
  11. for %%a in ("!aa!") do set wim=!.%%~a!
  12. goto dism
  13. :dism
  14. Dism /Get-WimInfo /WimFile:%wim% ||echo 输入错误&pause&&endlocal&goto :home
  15. Dism /Get-WimInfo /WimFile:%wim%>a.txt
  16. for /f "tokens=4 delims=:\" %%m in (a.txt) do set k2=%%m
  17. echo.
  18. echo                [1] 提取
  19. echo.
  20. echo                [2] 映射
  21. echo.
  22. echo                [3] 退出
  23. echo.
  24. SET /P WIMNM=   输入索引序号:
  25. SET /P ac=请选择要运行的程序:
  26. echo.
  27. if /I "%ac%"=="1" goto sd2
  28. if /I "%ac%"=="2" goto 映射
  29. if /I "%ac%"=="3" goto exit
  30. echo           输入错误,请重新输入...
  31. pause>nul
  32. goto dism
复制代码

TOP

回复 3# samsung4203


    报错信息是什么?

TOP

  1. :home
  2. @echo off & setlocal enableDelayedExpansion
  3. cls
  4. for %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
  5.   for /f "delims=" %%b in ('dir /a-d /b /s %%a:\*.wim 2^>nul') do (
  6.     set/a n+=1&echo !n!, %%b
  7.     set ".!n!=%%b"
  8.   )
  9. )
  10. set/p aa=选择:
  11. for %%a in ("!aa!") do set wim=!.%%~a!
  12. goto dism
  13. :dism
  14. Dism /Get-WimInfo /WimFile:%wim%
  15. if errorlevel 1 echo 输入错误 & pause
  16. Dism /Get-WimInfo /WimFile:%wim%>a.txt
  17. for /f "tokens=4 delims=:\" %%m in (a.txt) do set k2=%%m
  18. echo.
  19. echo                [1] 提取
  20. echo.
  21. echo                [2] 映射
  22. echo.
  23. echo                [3] 退出
  24. echo.
  25. SET /P WIMNM=   输入索引序号:
  26. SET /P ac=请选择要运行的程序:
  27. echo.
  28. if /I "%ac%"=="1" goto sd2
  29. if /I "%ac%"=="2" goto 映射
  30. if /I "%ac%"=="3" goto exit
  31. echo           输入错误,请重新输入...
  32. pause>nul
  33. goto dism
复制代码
用if errorlevel 更好......

TOP

回复 7# ht河豚

感谢HT,你的办法很好! 这个批处理搜索的时候会搜索隐藏文件夹,怎么能过滤掉隐藏文件夹那。。。

TOP

返回列表