Programming Field

「&&」 (論理積) - DOS/コマンドプロンプト コマンド一覧

[Windows NT 系] 左のコマンドの実行に成功したときに右のコマンドが実行されます。

構文

<command1> && <command2>

解説

「&&」使用例

厳密には、「&&」の左側で指定したコマンドラインの終了コード(Errorlevel)が0のときに右側で指定したコマンドラインが実行されます。終了コードが0以外のときは右側のコマンドは実行されません。

C言語などでは「&&」の左側が0のとき(偽のとき)には右側は実行されません(ショートサーキット)が、終了コードは一般的に「0」が「正常終了」を表すため、終了コードが0以外のときに「偽である」と考えて「0以外のときは右側を実行しない」という流れとなります。

注意点として、いずれか、または両方のコマンドラインの中に環境変数を用いるとすべてのコマンドが実行される前に環境変数が展開されます(これはIfFor括弧を使った時も同様です)。そのため、

call :piyo && echo %RETVAR%

というコマンドラインは多くの場合意図しない結果となります。そこで、拡張機能が使える場合Setlocal「!」を用いて

setlocal enabledelayedexpansion
call :piyo && echo !RETVAR!

とすることでラベル「piyo」を処理したときの終了コードを正しく用いることができます。

「||」と組み合わせる場合、「&&」との優先順位は同じで基本的に左から順番に実行されますが、順番を変えたい場合は括弧「( )」を使います(詳しくは「||」をご覧ください)。

「&&」文字そのものを通常の文字としてコマンドラインの一部に含めたりEchoコマンドなどで出力したりする場合は、「" "」の利用が可能であれば「" "」で括るか、そうではない場合は「^」文字を各文字の手前に記述する(「^&^&」などとする)必要があります。

なお、「&」は効果が異なります。