それで、今日、次のコマンドで改行を設定できることを知りました。
set nl=^&echo.
例えば:
set nl=^&echo.
echo Hello%nl%world
収量
Hello
world
しかし、なぜこれが機能するのでしょうか。^& の意味は何ですか?
それで、今日、次のコマンドで改行を設定できることを知りました。
set nl=^&echo.
例えば:
set nl=^&echo.
echo Hello%nl%world
収量
Hello
world
しかし、なぜこれが機能するのでしょうか。^& の意味は何ですか?
コードを .bat ファイル内に配置し、エコーをオフに設定しない (エコーをオンのままにする) と、コマンドがどのように展開され実行されるかがわかります。
set nl=^&echo.
echo One%nl%Two%nl%Three
C:\>set nl=&echo.
C:\>echo One & echo.Two & echo.Three
One
Two
Three
は特殊文字を^
エスケープして、変数&
内に設定できるリテラル文字にします。nl
次に、nl
変数が展開されると、&echo.
が挿入されます。
あとは&echo.
部品を分解するだけです。アンパサンド&
は、新しいコマンドが同じ行で始まることを意味します。同じ行の新しいコマンドはecho.
、新しい行を出力する です。