标题: [文件操作] [已解决]为什么批处理第二层循环for /r没有执行? [打印本页]
作者: hfgjgx 时间: 2023-10-31 20:55 标题: [已解决]为什么批处理第二层循环for /r没有执行?
本帖最后由 hfgjgx 于 2023-11-2 10:25 编辑
代码如下:- @echo off
- for /f "delims=" %%a in ('dir /b /ad-h C:\') do (
- echo %%a
- if "%%a" neq "Windows" (
- echo %%a
- for /r "C:\%%a" %%i in (*.exe) do (
- echo %%i
- echo F:\test\%%a%%~pi%%~ni.txt
- )
- )
- )
- pause
复制代码
经过我的不断调试发现脚本执行后for /r没有执行,程序就结束了.而把路径改为绝对路径就没问题
这是是什么原因?如何解决?
作者: terse 时间: 2023-10-31 21:43
这样呢- pushd "C:\%%a"
- for /r %%i in (*.exe) do (
- echo %%i
- echo F:\test\%%a%%~pi%%~ni.txt
- )
- popd
复制代码
作者: Batcher 时间: 2023-10-31 21:54
回复 1# hfgjgx
1.bat- @echo off
- set "RootFolder=C:\"
- for /f "delims=" %%a in ('dir /b /ad-h "%RootFolder%"') do (
- if "%%a" neq "Windows" (
- echo %%a
- call :SearchExe "%%a"
- )
- )
- pause
- goto :eof
-
- :SearchExe
- pushd "%RootFolder%\%~1"
- for /r %%i in (*.exe) do (
- echo %%i
- )
- popd
复制代码
2.bat- @echo off
- set "RootFolder=C:\"
- for /d %%a in ("%RootFolder%\*") do (
- if "%%~nxa" neq "Windows" (
- echo %%~nxa
- pushd "%%a"
- for /r %%i in (*.exe) do (
- echo %%i
- )
- popd
- )
- )
- pause
复制代码
作者: hfgjgx 时间: 2023-11-1 14:46
回复 2# terse
可以的,谢谢
作者: hfgjgx 时间: 2023-11-1 15:20
回复 3# Batcher - @echo off
- for /f "delims=" %%a in ('dir /b /ad-h "C:\"') do (
- if "%%a" neq "Windows" (
- echo %%a
- call :SearchExe "%%a" "%%a"
- )
- )
- pause
- goto :eof
-
- :SearchExe
- echo %~1
- for /r "%~2" %%i in (*.exe) do (
- echo %%i
- )
复制代码
还是没有执行for /r,并且echo输出的是%~1
作者: Batcher 时间: 2023-11-1 15:39
回复 5# hfgjgx
更新1.bat
增加2.bat
内层循环不能使用 for /r %%a %%b 或者 for /r !str! %%b 的原因
http://bbs.bathome.net/thread-41525-1-1.html#pid189651
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |