取得してECHO is on.
いる理由は、遅延展開が使用されなかったため、コマンドが実行される前に%var%
andの値が挿入され、開始時に定義されていなかったため、空の変数が挿入されたためです。と解釈されました。引数なしで echo を実行すると、 echo がオンかオフかが出力されます。%MyVar%
for
echo %MyVar%>>text.txt
echo >>text.txt
text.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: =!
。