条件分岐(2)
さて、バッチファイルの中で条件を指定して特定の処理を行う方法は分かりましたが、これだけではおもしろいバッチファイルは制作できません。
次にご紹介するのはバッチファイルの中の特定の位置に印を付ける方法と、処理の流れをそこに飛ばす方法です。
バッチファイルの特定の場所に印を付けるためには、その行の頭に「:」を書いて、その後にその場所を指し示す名前を書きます。この名前のことを「ラベル」と言います。
処理の流れを指定のラベルに移動させるには「GOTO」コマンドを利用します。このコマンドの書式は以下の通りです。
GOTO 異動先ラベル名
この「GOTO」コマンドを前の項で学習した「IF」コマンドと組み合わせることで、ある一定の条件を満たした(または満たさなかった)時に、指定の場所に処理を飛ばすことができます。
さて、それでは早速これらを使って何か作ってみましょう。そうですねえ、何を作りましょうか・・・。前の項で作ったパラメータによって表示を変えるバッチファイルに、予想もしない適当なパラメータを与えて起動されたときに、エラーメッセージを出力するように改良してみましょう。
REM File Name IF1_ERR.BAT
@ECHO OFF
ECHO IF分の練習です。
IF "%1"=="" ECHO パラメータの指定がありません。何か指定してください
IF "%1"=="" GOTO END
IF "%1"=="1" ECHO パラメータに1が指定されました。
IF "%1"=="1" GOTO END
IF "%1"=="2" ECHO パラメータに2が指定されました。
IF "%1"=="2" GOTO END
IF "%1"=="腹減った" ECHO 食べ過ぎると太りますよ。
IF "%1"=="腹減った" GOTO END
ECHO %1は不正なパラメータです。
:END
ECHO 終了です。
こんな感じにすることで、何か不正なパラメータが入力されたときでも、エラーメッセージを返して終了することができます。
バッチファイルは1行ずつ実行されていきますので、GOTOの前には上と同じ条件が繰り返し書いてあります。
そうなると、前の項でやった環境変数「TMP」が指定されていなかったらエラーを出力するバッチファイルもIFとGOTOを使って書くことができます。
それでは早速作ってみましょう。
REM File Name IF2_GOTO.BAT
ECHO 環境変数TMPを検査します。
IF "%TMP%"=="" GOTO ERROR
ECHO OKです。
:ERROR
ECHO エラーです。TMPは設定されていません。
前と見比べてみて頂けるとおわかりのように、同じ処理であってもプログラムの書き方が全く違う場合もあります。
これが実はプログラムのおもしろいところであり、人の書いたプログラムを見るのがいやになる理由だったりします。
次へ
バッチファイル講座の目次に戻る
MS-DOSの部屋に戻る
トップページに戻る