来自我的蝙蝠文件的奇怪的待办事项结果

时间:2012-04-18 07:25:46

标签: for-loop batch-file set

我想知道为什么_STR没有设置为新的%% A?感谢。

FOR /f "tokens=1 delims=" %%A IN ('dir /b C:\test') DO (
    ECHO %%A
    SET _STR=%%A
    ECHO TEST : %_STR%
REM IF "%%A:~-1"=="/" ECHO %%A  
)

我的输出看起来像这样......

FILE1.TXT
TEST:folder3
FILE2.TXT
TEST:folder3
文件夹1
TEST:folder3
文件夹2
TEST:folder3
folder3
TEST:folder3

1 个答案:

答案 0 :(得分:1)

_STR将被设置为新的%% A,但你无法以这种方式回应它 因为在括号块中,所有百分比变量在解析时扩展,然后才开始执行 为避免这种情况,您可以使用延迟扩展或CALL技巧。

Setlocal EnableDelayedExpansion
FOR /f "tokens=1 delims=" %%A IN ('dir /b C:\test') DO (
    ECHO %%A
    SET _STR=%%A
    ECHO TEST : !_STR!
    call ECHO TEST2 : %%_STR%%
)