And*_*ong 3 for-loop cmd batch-file command-prompt
我这里有问题.首先,代码:
test.bat的内容:
@echo off
cls
for /F "delims=" %%a in ('dir /B /A-D ^| findstr /I ".txt$"') do (
set str=%%a
echo %str% >> list.tmp
pause
)
echo ------------------
for /F %%i in (list.tmp) do echo %%i
del list.tmp
echo ------------------
Run Code Online (Sandbox Code Playgroud)
在test.bat所在的同一目录中,有两个测试文件:1.txt和2.txt
当我运行test.bat时,我的输出是:
------------------
2.txt
2.txt
------------------
Run Code Online (Sandbox Code Playgroud)
如您所见,未列出1.txt.
添加3.txt时,输出为:
------------------
3.txt
3.txt
3.txt
------------------
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗?
谢谢,黄安德鲁
您需要使用延迟扩展功能,因为在FOR循环内,您正在读取变量,并且该变量也在该循环中被修改.
@echo off
setlocal enabledelayedexpansion
cls
for /F "delims=" %%a in ('dir /B /A-D ^| findstr /I ".txt$"') do (
set str=%%a
echo !str! >> list.tmp
pause
)
echo ------------------
for /F %%i in (list.tmp) do echo %%i
del list.tmp
echo ------------------
Run Code Online (Sandbox Code Playgroud)