バッチファイルを使おう(初心者向け・ifコマンド基礎編)

プログラムで条件分岐は必須です。それさえあればプログラムが書けると言っても過言では無いです。もちろん、条件分岐だけではなく、色々と必要な物はありますが、条件分岐が使えないと高度なプログラムは出来ないですね。もちろん、バッチファイルにも条件分岐があり、それを最大限生かすことで、より高度なことをバッチで実行することが可能です。今回は、バッチファイルのifコマンドの基礎部分を紹介します。

ifコマンドを使って条件分岐を行う

プログラム経験者では必ず見かけるのが「if」です。共通言語と言っても過言ではありません。もちろん、バッチファイルでもif文を使って条件分岐が可能です。バッチファイルだからと言って高度な事はしてないので、if文に関して少しでも知識があれば簡単に使えます。

バッチファイルのifコマンド

バッチファイルのifコマンドはとても簡単です。基本形は以下です。

if 条件式 コマンド

以上です。あとはhelpコマンドで確認すれば簡単なのでこれにて本記事を終了、なんてことはしません。各プログラミング言語に比べて、非常にシンプルですね。さて、使い方ですが、まず、helpコマンドを使用してDOS先生に使い方を伺ってみると、お返事の冒頭で使い方を教えて頂けます。

IF [NOT] ERRORLEVEL 番号 コマンド
IF [NOT] 文字列1==文字列2 コマンド
IF [NOT] EXIST ファイル名 コマンド

掴みどころが難しい回答ですね。理解すれば特に難しいものではないのですが、文面だけ見ると難解です。一旦、[not]の部分を取り除いてみましょう。

IF ERRORLEVEL 番号 コマンド
IF 文字列1==文字列2 コマンド
IF EXIST ファイル名 コマンド

少しだけ見やすくなったと思います。『コマンド』と書かれている部分には、コマンドを記載し、ifコマンドの判定が真(true)であれば、記載したコマンドが実行されます。さて、条件式について順番に見ていきましょう。

ifコマンドの判定条件

ERRORLEVEL 番号』の条件式ですが、コマンドの戻り値を判定します。コマンドの戻り値について説明すると長いので本記事では割愛しますが、1つのコマンドはそれぞれ戻り値を持っており、正常に終了すればコマンドの戻り値は0です。しかし、正常に終了しなければ、0以外が戻り値として返されます。『ERRORLEVEL 番号』がifコマンドの条件の場合、最後のプログラム実行で指定された番号以上の指定コードが戻り値だった場合にifの条件式をTrueとして判定します。つまり、エラーが出た時の処理をどうしますかということです。

次に『文字列1==文字列2』の条件式ですが、これは文字列の内容が一致するかどうかを判定条件とするものです。プログラム経験者なら大多数の方が目にしたことがあると思います。文字列しか判定出来ないので注意して下さい。

最後に『EXIST ファイル名』の条件式ですが、これは指定したファイルが存在するかを判定条件とするものです。たとえば、「if exist hoge.txt ~」というifコマンドであれば、「hoge.txtというファイルが存在すれば真(true)」ということを意味しています。

尚、いずれの条件式も、先頭にnotを記述すると、条件式の否定の場合に真が判定されます。例えば、「if not exist hoge.txt ~」の場合は「hoge.txtというファイルが存在しなければ真」という意味です。

ifコマンド条件式の判定が偽の場合

プログラミング経験者なら絶対に疑問を抱くと思います。偽の場合の判定方法です。これも簡単です。「ELSE」節を追加すれば解決します。DOS先生にhelpで尋ねた際に、ELSE節の説明も頂いております。基本形は以下です。

if 条件式 trueコマンド else falseコマンド

ちなみに、判定がtrueのコマンドに続けて「else コマンド」を記載して下さい。ELSE節の書き方は色々ありますが、今回は基本的な形を覚えて下さい。

まとめ

今回は条件分岐のコマンドであるifコマンドの基礎の基礎を紹介させて頂きました。このifコマンドは奥が深いので、もう少し踏み込んだ話は別の機会に紹介させて頂きます。基本的には「if 条件式 trueコマンド else falseコマンド」の形を覚えておけば大丈夫です。