标题: [文本处理] 请问此BAT代码怎么改成全盘搜索*.wim文件? [打印本页]
作者: samsung4203 时间: 2012-8-10 08:56 标题: 请问此BAT代码怎么改成全盘搜索*.wim文件?
此代码只能搜索根目录,或是子目录里边的boot.wim文件,怎么改成全盘搜索扩展名是wim的文件。这个代码还有个问题,就是goto home之后序号会递增,意思就是之前是1、2、3 goto之后变成4、5、6- :home
- @echo off & setlocal enableDelayedExpansion
- cls
- 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 (
- if exist "%%a:\sources\boot.wim" (
- set/a n+=1&echo !n!, %%a:\sources\boot.wim
- set ".!n!=%%a:\sources\boot.wim"
- )
- )
- set/p aa=选择:
- for %%a in ("!aa!") do set wim=!.%%~a!
- goto dism
复制代码
作者: forfiles 时间: 2012-8-10 09:05
- @echo off
- 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 (
- if exist %%a:\ (
- dir /s /b %%a\*.wim
- )
- )
复制代码
作者: samsung4203 时间: 2012-8-10 09:20
回复 2# forfiles
此代码测试失败
作者: apang 时间: 2012-8-10 09:27
本帖最后由 apang 于 2012-8-10 09:31 编辑
- :home
- @echo off & setlocal enableDelayedExpansion
- cls
- 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 (
- for /f "delims=" %%b in ('dir /a-d /b /s %%a:\*.wim 2^>nul') do (
- set/a n+=1&echo !n!, %%b
- set ".!n!=%%b"
- )
- )
- set/p aa=选择:
- for %%a in ("!aa!") do set wim=!.%%~a!
- goto dism
- ......
- endlocal&goto :home
复制代码
当时你又没要求goto :home
你自己加了goto :home,又不适时endlocal,变量n才会一直增加的。
作者: samsung4203 时间: 2012-8-10 10:03
回复 4# apang
多谢apang大哥,问题解决了! 但又有个新的问题 代码:【Dism /Get-WimInfo /WimFile:%wim% 】命令执行成功后 却停在了【 || echo 输入错误&pause】这里,正常的应该跳到【Dism /Get-WimInfo /WimFile:%wim%>a.txt】以下的命令中,如果我去掉【||echo 输入错误&pause&&endlocal&goto :home】就能正常执行其他的命令!- :home
- @echo off & setlocal enableDelayedExpansion
- cls
- 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 (
- for /f "delims=" %%b in ('dir /a-d /b /s %%a:\*.wim 2^>nul') do (
- set/a n+=1&echo !n!, %%b
- set ".!n!=%%b"
- )
- )
- set/p aa=选择:
- for %%a in ("!aa!") do set wim=!.%%~a!
- goto dism
-
- :dism
- Dism /Get-WimInfo /WimFile:%wim% ||echo 输入错误&pause&&endlocal&goto :home
- Dism /Get-WimInfo /WimFile:%wim%>a.txt
- for /f "tokens=4 delims=:\" %%m in (a.txt) do set k2=%%m
-
- echo.
- echo [1] 提取
- echo.
- echo [2] 映射
- echo.
- echo [3] 退出
- echo.
- SET /P WIMNM= 输入索引序号:
- SET /P ac=请选择要运行的程序:
- echo.
- if /I "%ac%"=="1" goto sd2
- if /I "%ac%"=="2" goto 映射
- if /I "%ac%"=="3" goto exit
- echo 输入错误,请重新输入...
- pause>nul
- goto dism
复制代码
作者: forfiles 时间: 2012-8-10 10:48
回复 3# samsung4203
报错信息是什么?
作者: ht河豚 时间: 2012-8-10 11:05
- :home
- @echo off & setlocal enableDelayedExpansion
- cls
- 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 (
- for /f "delims=" %%b in ('dir /a-d /b /s %%a:\*.wim 2^>nul') do (
- set/a n+=1&echo !n!, %%b
- set ".!n!=%%b"
- )
- )
- set/p aa=选择:
- for %%a in ("!aa!") do set wim=!.%%~a!
- goto dism
-
- :dism
- Dism /Get-WimInfo /WimFile:%wim%
- if errorlevel 1 echo 输入错误 & pause
- Dism /Get-WimInfo /WimFile:%wim%>a.txt
- for /f "tokens=4 delims=:\" %%m in (a.txt) do set k2=%%m
-
- echo.
- echo [1] 提取
- echo.
- echo [2] 映射
- echo.
- echo [3] 退出
- echo.
- SET /P WIMNM= 输入索引序号:
- SET /P ac=请选择要运行的程序:
- echo.
- if /I "%ac%"=="1" goto sd2
- if /I "%ac%"=="2" goto 映射
- if /I "%ac%"=="3" goto exit
- echo 输入错误,请重新输入...
- pause>nul
- goto dism
复制代码
用if errorlevel 更好......
作者: samsung4203 时间: 2012-8-10 17:34
回复 7# ht河豚
感谢HT,你的办法很好! 这个批处理搜索的时候会搜索隐藏文件夹,怎么能过滤掉隐藏文件夹那。。。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |