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

[文本处理] 批处理全盘搜索磁盘根目录下的sources文件夹 无法goto跳转

我想全盘搜索磁盘根目录下的sources文件夹 找到文件夹后执行一个可选择的命令:
下面这个批处理是我做的 可以搜到全盘根目录下的sources文件夹,但无法用goto跳转到指定的标签
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i in (c d e f g h i j k l m n o p q r s t u v w s y z) do (
  4.   if exist %%i:\sources\ (
  5. echo.
  6. echo                在%%i:\sources文件夹下找到了inslall.wim映像
  7. Dism /Get-WimInfo /WimFile:%%i:\sources\install.wim
  8. echo.
  9. echo                [1] 提取镜像1
  10. echo.
  11. echo                [2] 提取镜像2
  12. echo.
  13. SET /P ST=请选择要运行的程序:
  14. echo.
  15. if /I "%ST%"=="1" goto s2
  16. if /I "%ST%"=="2" goto s1
  17. :s1
  18. del /q d:\install.wim
  19. imagex /export %%i:\sources\install.wim 1 d:\install.wim
  20. echo 提取完成
  21. pause>nlu
  22. :s2
  23. del /q d:\install.wim
  24. imagex /export %%i:\sources\install.wim 2 d:\install.wim
  25. echo 提取完成
  26. pause>nlu
  27.       )
  28.     )
  29.   )
  30. )
  31. pause
复制代码
如果直接goto s2的话 就会出现如下图的提示

求高手解答!!!

  1. @echo off & setlocal enableDelayedExpansion
  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 s y z) do (
  3. if exist %%a:\nul (
  4. for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\install.wim" 2^>nul') do (
  5. set wim=%%b
  6. goto dism
  7. )))
  8. pause
  9. exit
  10. :dism
  11. echo.
  12. echo                找到 %wim% 映像
  13. echo.
  14. echo                [1] 提取镜像1
  15. echo.
  16. echo                [2] 提取镜像2
  17. echo.
  18. SET /P ST=请选择要运行的程序:
  19. echo.
  20. if /I "%ST%"=="1" goto s2
  21. if /I "%ST%"=="2" goto s1
  22. :s1
  23. del /q d:\install.wim 2>nul
  24. imagex /export "%wim%" 1 d:\install.wim
  25. echo 提取完成
  26. pause
  27. exit
  28. :s2
  29. del /q d:\install.wim 2>nul
  30. imagex /export "%wim%" 2 d:\install.wim
  31. echo 提取完成
  32. pause
复制代码
测试环境:WINDOWS 8 64Bit
如系统环境不同,请自行修改 :)

TOP

回复 2# andyrave

   多谢andyrave 大哥的指导 我已经按照您的指导完美的解决了问题 下面是我修改过的原代码:此代码是全盘搜索根目录下sources文件夹下的install.wim文件 并打开指定路径的Install.wim文件
现在又有个新问题:如何在输入数字之后(imagex /export "%wim%" 1 c:\install.wim)中的1也变成我们输入的数字 比如说输入2之后(imagex /export "%wim%" 1 c:\install.wim)中的1就变成了2 这样我们可以省去很多的繁琐代码 来优化源代码。。。
  1. :home
  2. cls
  3. @echo off&setlocal enabledelayedexpansion
  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\install.wim" (
  6.     set/a n+=1&echo !n!, %%a:\sources\install.wim
  7.     set ".!n!=%%a:\sources\install.wim"
  8.   )
  9. )
  10. set/p aa=选择:
  11. for %%a in ("!aa!") do set wim=!.%%~a!
  12. goto dism
  13. pause
  14. exit
  15. :dism
  16. cls
  17. Dism /Get-WimInfo /WimFile:%wim%
  18. echo.
  19. echo                找到 %wim% 映像
  20. echo.
  21. echo                [1] 提取镜像1到C盘
  22. echo.
  23. echo                [2] 提取镜像2到C盘
  24. echo.
  25. echo                [3] 提取镜像3到C盘
  26. echo.
  27. echo                [4] 提取镜像4到C盘
  28. echo.
  29. echo                [5] 提取镜像5到C盘
  30. echo.
  31. echo                [6] 返回主菜单
  32. echo.
  33. SET /P ST=请选择要运行的程序:
  34. echo.
  35. if /I "%ST%"=="1" goto s1
  36. if /I "%ST%"=="2" goto s2
  37. if /I "%ST%"=="3" goto s3
  38. if /I "%ST%"=="4" goto s4
  39. if /I "%ST%"=="5" goto s5
  40. if /I "%ST%"=="6" goto home
  41. echo           输入错误,请重新输入...
  42. pause>nul
  43. goto dism
  44. :s1
  45. del /q c:\install.wim 2>nul
  46. imagex /export "%wim%" 1 c:\install.wim
  47. echo 提取镜像1完成
  48. pause>nul
  49. goto home
  50. :s2
  51. del /q c:\install.wim 2>nul
  52. imagex /export "%wim%" 2 c:\install.wim
  53. echo 提取镜像2完成
  54. pause>nul
  55. goto home
  56. :s3
  57. del /q c:\install.wim 2>nul
  58. imagex /export "%wim%" 3 c:\install.wim
  59. echo 提取镜像3完成
  60. pause>nul
  61. goto home
  62. :s4
  63. del /q c:\install.wim 2>nul
  64. imagex /export "%wim%" 4 c:\install.wim
  65. echo 提取镜像4完成
  66. pause>nul
  67. goto home
  68. :s5
  69. del /q c:\install.wim 2>nul
  70. imagex /export "%wim%" 5 c:\install.wim
  71. echo 提取镜像5完成
  72. pause>nul
  73. goto home
复制代码
再下面的问题就是我输入6之后返回主菜单 之前搜索出来的路径数会累计增加 第一次是 1,2 返回之后变成3,4 再有就是如果有两个install.wim在1和2路径下 并没有3路径 我如果输入3之后 会出现错误 这个怎么解决?

TOP

回复 3# samsung4203


SET /P 镜像序号
  1. @echo off & setlocal enableDelayedExpansion
  2. :home
  3. 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 (
  4.   if exist "%%a:\sources\install.wim" (
  5.     set/a n+=1&echo !n!, %%a:\sources\install.wim
  6.     set ".!n!=%%a:\sources\install.wim"
  7.   )
  8. )
  9. set/p aa=选择:
  10. for %%a in ("!aa!") do set wim=!.%%~a!
  11. goto dism
  12. pause
  13. exit
  14. :dism
  15. cls
  16. Dism /Get-WimInfo /WimFile:%wim%
  17. echo.
  18. echo                找到 %wim% 映像
  19. echo.
  20. echo                提取镜像序号 ?到C盘
  21. echo.
  22. echo.
  23. SET /P WIMNM=输入提取镜像序号:
  24. del /q c:\install.wim 2>nul
  25. imagex /export "%wim%" %WIMNM% c:\install.wim
  26. echo 提取镜像 %WIMNM% 完成
  27. pause>nul
  28. goto home
复制代码
测试环境:WINDOWS 8 64Bit
如系统环境不同,请自行修改 :)

TOP

回复 4# andyrave

多谢andyrave  已经解决了一部分问题!

TOP

返回列表