2012-04-18 20 views
1

なぜ_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
のfolder1
TEST:FOLDER3
フォルダ2
テスト:フォルダ3
フォルダ3
TEST:folder3

答えて

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