「&」 (コマンドの連結) - DOS/コマンドプロンプト コマンド一覧
[Windows NT 系] 左のコマンドの実行した後に右のコマンドが実行されます。
構文
<command1> & <command2>
解説
<command1> を実行した後、その結果に関わらず <command2> を実行します。ただし、<command1> がExitなどでプロンプト(セッション)を終了させた場合は実行されません。
「&」を使用した場合、Errorlevel(または環境変数ERRORLEVEL)の値は <command2> の実行結果(& で複数つないだ場合はその最後のコマンド)による値となります。
「&」でコマンドをまとめた場合は、環境変数の展開のタイミングに注意する必要があります。環境変数はすべてのコマンドを実行する前に展開されるため、
set FOOVAR=hello & echo %FOOVAR%
を実行すると、実行する前に「FOOVAR」が何も設定されていない場合「ECHO は <ON> です」(または「ECHO は <OFF> です」)と出力されてしまいます。これを回避するにはSetlocalと「!」を用いて
setlocal enabledelayedexpansion set FOOVAR=hello & echo !FOOVAR!
とします。これを逆手にとったのが以下の例で、
set HOGEVAR= setlocal set HOGEVAR=world endlocal & set PIYOVAR=Hello %HOGEVAR% echo %PIYOVAR% %HOGEVAR%
とすると、Endlocalの外側で環境変数「PIYOVAR」の値を「HOGEVAR」の値を利用して設定しつつ、環境変数「HOGEVAR」を破棄することができます。これを実行すると、画面には「Hello world 」が出力されます。
「&」文字そのものを通常の文字としてコマンドラインの一部に含めたりEchoコマンドなどで出力したりする場合は、「" "」の利用が可能であれば「" "」で括るか、そうではない場合は「^」文字を文字の手前に記述する(「^&」などとする)必要があります。
なお、「&」と同じ意味で「;」を使うことはできません。