2012-04-18 51 views
1

我想知道爲什麼_STR未設置爲新的%% A?謝謝。奇怪的For-In-Do結果從我的蝙蝠文件

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
測試:文件夾3

回答

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%% 
) 
+0

非常正是我需要知道的! – user1229895 2012-04-18 08:26:04