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
テスト : folder3 file2.txt テスト
:
folder3 フォルダー1 テスト : フォルダー 3 フォルダー 2 テスト : フォルダー 3 フォルダー 3 テスト : フォルダー 3





4

1 に答える 1

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%%
)
于 2012-04-18T07:35:20.993 に答える