在批处理文件for-loop中更改变量

时间:2016-09-05 09:43:54

标签: batch-file for-loop

我创建了一个代码,它接受以下变量:

SET sdir=T:\path\to\in\
SET tempdir=T:\path\to\tempBatch\
SET list=DE NL

然后,我尝试遍历列表项并将其中的所有TXT文件复制到tempBatch文件夹。

(for %%l in (%list%) do (
    set tempINdir=%sdir%%%l
    echo %%l
    echo %tempINdir%
))

我得到的输出是:

DE
T:\path\to\in\NL
NL
T:\path\to\in\NL

当然,我想让%%l变量与%sdir%路径连接:

我得到的输出是:

DE
T:\path\to\in\DE
NL
T:\path\to\in\NL

为什么创建tempINdir时只会占据列表中的最后一项?我尝试使用this answer中的setlocal EnableDelayedExpansion,但这并没有做任何事情。

1 个答案:

答案 0 :(得分:0)

正如Stephan和this answer的评论中所解释的那样:

  

延迟变量用!var引用!而不是%var%

因此,在for循环中,您需要使用!var!代替%var%