【ハウツー】
前回のように環境変数を用いて、システムに設定されている文字列やユーザーによって入力された文字列を取得できます。この文字列を調べ、バッチファイルで実行するコマンドを切り替えるにはifコマンドを使います。ifコマンドは、バッチプログラムで用いられる特殊なコマンドで、指定された条件が一致するときのみ特定のコマンドを実行します。
ifコマンドを使うことで、起動するプログラムをユーザーに選択させるなど、バッチプログラムが処理するオプションを入力、その結果によって処理を分岐します。このコマンドを使えば、わずかな処理の違いのために複数のバッチファイルにプログラムを分ける必要がなくなり、1 つのバッチファイルに多くの機能を統合できます。
ifコマンドにはいくつかの種類がありますが、プログラム的な分岐に利用する場合は2つの文字列を比較して互いに等しければ対象のコマンドを実行します。
if 文字列1==文字列2 コマンド
このifコマンドは、文字列1と文字列2に指定した任意の文字列が等しければ続くコマンドを実行しますが、等しくなければコマンドは実行されません。
@prompt $G
if Kitty == Kitty echo このコマンドは実行されます
if Kitten == Kitty echo このコマンドは実行されません
@pause
![]() |
サンプル01の実行結果 |
サンプル01は、ifコマンドで比較する2つの文字列を直接バッチファイルに記述しています。実行結果を見るまでもなく、文字列が等しいかどうかはテキストを見れば一目瞭然ですが、結果から if コマンドの働きを確認できます。Kitty == Kittyで比較しているifコマンドでは続くechoコマンドが実行されていますが、Kitten == Kittyで比較しているifコマンドでは、文字列が等しくないため続くechoコマンドが実行されません。
当然、このような固定された文字列をバッチファイルに記述することに意味はなく、実践ではバッチファイルを実行するまで不確定な情報、すなわち変数を比較します。設定されている環境変数の値によって動作を変更させたり、利用者に何らかの文字列を入力させ、その結果を比較するといった応用が考えられます。
@echo off
echo このえぐられた足でどうやってあの攻撃をかわすか?
echo 1.突如反撃のアイデアがひらめく
echo 2.仲間がきて助けてくれる
echo 3.かわせない。現実は非常である。
set /P INPUT="3択―ひとつだけ選びなさい>"
if %INPUT%==1 echo アイデアはひらめかなかった
if %INPUT%==2 echo 仲間は助けに来なかった
if %INPUT%==3 echo 答えは3だ……現実はあまくねーぜ
pause
![]() |
サンプル02の実行結果 |
サンプル02は、1~3までの選択肢を表示し、いずれかの値をキーボードで入力させて、その結果から実行するコマンドを変更します。入力した値によって、結果が変化することを確認してください。
| 【レポート】マカフィーの世界の専門家の意識調査「サイバー防衛報告書」とセキュリティソリューション [21:15 5/25] |
| アップル、Aperture 3.2.4を公開 - バグ修正、安定性向上など [20:51 5/25] |
| 【レポート】GTC 2012 - VGXでエンタープライズ環境でのGPU需要開拓を狙うNVIDIA [20:07 5/25] |
| デル、期間限定キャンペーンに特価アイテム追加、アップグレード無料も継続 [19:41 5/25] |
| 上海問屋、iPhoneとほぼ同じ薄さのバッテリ内蔵ヘッドホンアンプ [19:05 5/25] |
|
EVANGELION STORE TOKYO-01、6月はシンジ月間! ヱヴァスマホの先行予約実施 [05:09 5/27] ホビー |
|
[小田和正]1年がかりで全国ツアー完走 「今までで一番意味深い大きなツアーだった」 [05:00 5/27] ホビー |
|
[福士蒼汰]「仮面ライダーフォーゼ」で人気の若手俳優 初の写真集発売「素を知ってもらいたい」 [05:00 5/27] エンタメ |
|
エヴァンゲリオンレーシング、今年も鈴鹿8耐出場! 1,000人分の応援席も [00:30 5/27] ライフ |
|
「ガンスリ」10周年で大王付録にヘンリエッタフィギュア [22:22 5/26] ホビー |