バッチ プログラムで条件付き処理を実行します。
構文
if [not] ERRORLEVEL <number> <command> [else <expression>]
if [not] <string1>==<string2> <command> [else <expression>]
if [not] exist <filename> <command> [else <expression>]
コマンド拡張機能が有効になっている場合は、次の構文を使用します。
if [/i] <string1> <compareop> <string2> <command> [else <expression>]
if cmdextversion <number> <command> [else <expression>]
if defined <variable> <command> [else <expression>]
パラメーター
パラメーター | 説明 |
---|---|
ない | 条件が false の場合にのみコマンドを実行することを指定します。 |
エラーレベル <number> |
Cmd.exe によって実行された前のプログラムが、以上の終了コードを返した場合にのみ、true 条件を指定します。 |
<command> |
上記の条件が満たされた場合に実行する必要があるコマンドを指定します。 |
<string1>==<string2> |
string1 と string2 が同じ場合にのみ、true 条件を指定します。 これらの値には、リテラル文字列やバッチ変数 (たとえば、%1 ) を指定できます。 リテラル文字列を引用符で囲む必要はありません。 |
存在する <filename> |
指定したファイル名が存在する場合に true 条件を指定します。 |
<compareop> |
次のような 3 文字の比較演算子を指定します。
|
/私 | 文字列の比較で大文字と小文字が区別されません。
で string1==string2 を使用できます。 これらの比較は一般的であり、string1 と string2 の両方が数字のみで構成されている場合、文字列は数値に変換され、数値比較が実行されます。 |
cmdextversion <number> |
Cmd.exe のコマンド拡張機能に関連付けられている内部バージョン番号が、指定した数以上である場合にのみ、true 条件を指定します。 最初のバージョンは 1 です。 コマンド拡張機能に大幅な機能強化が追加されると、1 ずつ増加します。 コマンド拡張機能が無効になっている場合、cmdextversion 条件 は true になることはありません (既定では、コマンド拡張機能が有効になっています)。 |
定義 <variable> |
変数 が定義されている場合 true 条件を指定します。 |
<expression> |
コマンド ライン コマンドと、else 句でコマンドに渡すパラメーターを指定します。 |
/? | コマンド プロンプトにヘルプを表示します。 |
注釈
句が true の場合、 で指定された条件の場合は、条件に従うコマンドが実行されます。条件が false の場合、句の 内のコマンドは無視され、else 句で指定されたコマンドが実行。
プログラムが停止すると、終了コードが返されます。 終了コードを条件として使用するには、errorlevel パラメーターを使用します。
定義 を使用すると、%errorlevel%、%cmdcmdline%、%cmdextversion%の 3 つの変数が環境に追加されます。
%errorlevel%: ERRORLEVEL 環境変数の現在の値の文字列形式に展開します。 この変数は、ERRORLEVEL という名前の既存の環境変数がまだ存在しないことを前提としています。 存在する場合は、代わりにその ERRORLEVEL 値を取得します。
%cmdcmdline%: Cmd.exeによる処理の前に Cmd.exe に渡された元のコマンド ラインに拡張します。 これは、CMDCMDLINE という名前の既存の環境変数がまだ存在しないことを前提としています。 存在する場合は、代わりにその CMDCMDLINE 値を取得します。
%cmdextversion%: cmdextversion の現在の値文字列形式に拡張します。 これは、CMDEXTVERSION という名前の既存の環境変数がまだ存在しないことを前提としています。 存在する場合は、代わりにその CMDEXTVERSION 値を取得します。
場合は、の後のコマンドと同じ行で else 句を使用する必要があります。
例示
メッセージを表示するには ファイルProduct.datが見つからない場合にデータ ファイル見つかりません。次のように入力します。
if not exist product.dat echo Cannot find data file
ドライブ A のディスクをフォーマットし、フォーマット処理中にエラーが発生した場合にエラー メッセージを表示するには、バッチ ファイルに次の行を入力します。
:begin
@echo off
format a: /s
if not errorlevel 1 goto end
echo An error occurred during formatting.
:end
echo End of batch program.
現在のディレクトリからファイル Product.datを削除するか、Product.datが見つからない場合にメッセージを表示するには、バッチ ファイルに次の行を入力します。
IF EXIST Product.dat (
del Product.dat
) ELSE (
echo The Product.dat file is missing.
)
注
これらの行は、次のように 1 つの行に結合できます。
IF EXIST Product.dat (del Product.dat) ELSE (echo The Product.dat file is missing.)
バッチ ファイルの実行後に ERRORLEVEL 環境変数の値をエコーするには、バッチ ファイルに次の行を入力します。
goto answer%errorlevel%
:answer1
echo The program returned error level 1
goto end
:answer0
echo The program returned error level 0
goto end
:end
echo Done!
ERRORLEVEL 環境変数の値が 1 以下の場合に ok ラベルに移動するには、次のように入力します。
if %errorlevel% LEQ 1 goto okay
関連リンク
goto コマンド を する