在Windows shell脚本中修改For循环内的变量值

时间:2014-06-10 14:43:33

标签: batch-file cmd

我需要对文件夹中的前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"对于循环的每次迭代。为什么会这样?

1 个答案:

答案 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问题。