バッチファイル制御フロー

If文を利用した条件判定処理 (If文の書式) - MS-DOS コマンド

バッチファイルのif文について紹介します。

概要

バッチファイル内で条件判定して処理を分岐させたい場合にはif文を利用します。

書式

複数行の場合は以下の書式となります。
if [条件式] (
  [コマンド 1]
  [コマンド 2]
  ...
)

1行で記述する場合は以下の書式となります。
if [条件式] コマンド

else文を記述する場合の書式は次の通りです。
if [条件式] (
  [コマンド 1]
  [コマンド 2]
  ...
)else(
  [コマンド 3]
  [コマンド 4]
  ...
)

else if文を記述する場合の書式は次の通りです。
if [条件式] (
  [コマンド 1]
  [コマンド 2]
  ...
)else if [条件式] (
  [コマンド 3]
  [コマンド 4]
  ...
)else(
  [コマンド 5]
  [コマンド 6]
  ...
)

例1

以下のバッチファイルを作成します。

コード

バッチファイル
@ECHO OFF
SET /P INPUT_STR=

IF "%INPUT_STR%"=="Q" (
  ECHO "Q"が入力されました。
) ELSE (
  ECHO "Q"以外が入力されました。
)

解説

SETコマンドで文字の入力を受け付けます。
SET /P INPUT_STR=

入力された文字が、"Q"であれば、「 "Q"が入力されました。」のメッセージを画面に表示し、 それ以外の文字であれば、「"Q"以外が入力されました。」のメッセージを表示します。
IF "%INPUT_STR%"=="Q" (
  ECHO "Q"が入力されました。
) ELSE (
  ECHO "Q"以外が入力されました。
)

実行結果

作成したバッチファイルを実行します。


入力待ちの状態になります。"Q"を入力して[Enter]キーを押します。


「"Q"が入力されました。」のメッセージが表示されます。


再度バッチファイルを実行します。入力画面で"P"を入力して[Enter]キーを押します。


「"Q"以外が入力されました。」のメッセージが表示されます。


バッチファイルで、if文を利用して条件分岐を作成できました。

例2

以下のバッチファイルを作成します。

コード

バッチファイル
@ECHO OFF
SET /P INPUT_STR=

IF "%INPUT_STR%"=="Q" (
  ECHO "Q"が入力されました。
) ELSE IF "%INPUT_STR%"=="P" (
  ECHO "P"が入力されました。
) ELSE (
  ECHO "Q", "P" 以外が入力されました。
)

解説

先ほどのコードに ELSE IF 文を追加したコードです。"P"が入力された場合にもELSE IFで分岐します。

実行結果

"Q"を入力した結果です。「"Q"が入力されました。」のメッセージが表示されます。

"P"を入力した結果です。「"P"が入力されました。」のメッセージが表示されます。

"X"を入力した結果です。「"Q", "P" 以外が入力されました。」のメッセージが表示されます。

注意

ELSE や ELSE IF の前後の括弧にはスペースが必要です。
以下のバッチファイルを実行すると「ELSE( の使い方が誤っています。」エラーになります。
IF "%INPUT_STR%"=="Q" (
  ECHO "Q"が入力されました。
)ELSE(
  ECHO "Q"以外が入力されました。
)


また、以下の改行する記述法も 「'ELSE' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 エラーになります。
IF "%INPUT_STR%"=="Q" (
  ECHO "Q"が入力されました。
)
ELSE
(
  ECHO "Q"以外が入力されました。
)

著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
掲載日: 2023-03-16
iPentec all rights reserverd.