找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25852|回复: 7

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

[复制链接]
发表于 2012-8-10 08:56:46 | 显示全部楼层 |阅读模式
  此代码只能搜索根目录,或是子目录里边的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
复制代码
发表于 2012-8-10 09:05:04 | 显示全部楼层
  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. )
复制代码
 楼主| 发表于 2012-8-10 09:20:48 | 显示全部楼层
回复 2# forfiles

此代码测试失败
发表于 2012-8-10 09:27:26 | 显示全部楼层
本帖最后由 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才会一直增加的。
 楼主| 发表于 2012-8-10 10:03:05 | 显示全部楼层
回复 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
复制代码
发表于 2012-8-10 10:48:02 | 显示全部楼层
回复 3# samsung4203


    报错信息是什么?
发表于 2012-8-10 11:05:29 | 显示全部楼层
  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 更好......
 楼主| 发表于 2012-8-10 17:34:37 | 显示全部楼层
回复 7# ht河豚

感谢HT,你的办法很好! 这个批处理搜索的时候会搜索隐藏文件夹,怎么能过滤掉隐藏文件夹那。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 12:54 , Processed in 0.019630 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表