我的蝙蝠文件中出现了奇怪的 for-in-do 结果



我想知道为什么_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  
)

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

文件1.txt
测试:文件夹3
文件2.txt
测试:文件夹3
文件夹1
测试:文件夹3
文件夹2
测试:文件夹3
文件夹3
测试:文件夹3

_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%%
)

最新更新