取得してECHO is on.いる理由は、遅延展開が使用されなかったため、コマンドが実行される前に%var%andの値が挿入され、開始時に定義されていなかったため、空の変数が挿入されたためです。と解釈されました。引数なしで echo を実行すると、 echo がオンかオフかが出力されます。%MyVar%forecho %MyVar%>>text.txtecho >>text.txttext.txt
この問題を解決するには、次の 2 つのことを行う必要があります。
まず、2行目に何か問題があります。の set と local の間にスペースはありませんsetlocal。2 行目はSETLOCAL EnableDelayedExpansion.
%次に、遅延展開を使用するには、各変数のすべての を の!ように に置き換える必要が!var!あります%var%。
最終結果:
@echo ON
SETLOCAL EnableDelayedExpansion
For %%# in (*.*) do (
SET var=%%~n#
Set MyVar=!var!
set MyVar=!MyVar: =!
echo !MyVar!>>text.txt
)
この場合、実際には一時変数を使用する必要はありません 。実行しSET MyVar=%%~n#て にスキップできますset MyVar=!MyVar: =!。