Programming Field

DOS コマンド一覧

|| (論理和)

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

構文

<command1> || <command2>

解説

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

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

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

hoge.exe || echo %ERRORLEVEL%

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

setlocal enabledelayedexpansion
hoge.exe || echo !ERRORLEVEL!

とすることで「hoge.exe」の終了コードを正しく用いることができます。

<command1><command2> に「||」や「&&」を含む場合で条件の判定順序を変えたい場合はそれぞれのコマンドを括弧「( )」で囲みます。例えば以下のように記述します、

(program1.exe || program2.exe) && (program3.exe || program4.exe || program5.exe)

この例の場合は以下の通りです。