我需要对文件夹中的前4个文件执行操作。因此,计数器变量必须在For循环的每个操作期间递增。以下代码:
@ECHO OFF
SETLOCAL
SET TESTDIR1=D:\Local Data\Shell Script\test folder 1
SET _transfer=XXXX
FOR /f "delims=" %%i IN ('dir "%TESTDIR1%\*" /b/a-d/o-d') DO (
SET _transfer=%_transfer:~1%
ECHO %_transfer%
)
打印" XXXX"对于循环的每次迭代。为什么会这样?
答案 0 :(得分:1)
尝试
FOR /f "TOKENS=1*delims=[]" %%i IN ('dir "%TESTDIR1%\*" /b/a-d/o-d^|find /n /v ""') DO (
if %%1 LEQ 4 echo %%j
)
您的方法不起作用,因为批处理在块执行之前用值%var%
替换块中的任何var
(带括号的命令序列)。有关详细信息,请参阅与delayed expansion
相关的任意数量的SO问题。