2011年1月28日金曜日

バッチファイルでIF文の条件式を書く時の注意点 - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。制御文と環境変数
○Windows XP
信頼性の高いバッチファイルを書く方法についてです。

IF文で変数を使う条件式を書く時は、条件式の左辺や右辺を「"」で括る事を、おすすめします。
そうしないと、変数の値が空の時に、左辺や右辺の値が空になって、文法エラーを起こす事があるからです。

o この動きは、コマンドプロンプト画面とは異なりますので、注意します。
o 問題を起こすのは、変数の値を「%」や「!」を使って表示する時です。
o 問題を起こさないのは
    + 変数の前後に普通の文字が入っている場合 = 必ず文字が残ります。
    + 値を数値と解釈する時も、大丈夫みたいです。例えば、「IF ERRORLEVEL 数値」構文


**** 問題が起こる書き方
o %1 が空の時、IF文の所で文法エラーになります = 途中で終了してしまいます。
--------
@echo off
if %1==ミクさん echo ミクさん。おはようございます。
echo 皆さん、おはようございます。
--------



**** 正しい書き方
o %1が空の時にも正しく動く書き方です。変数 %1 と値の両方を「"」で括るのがポイントです。
--------
@echo off
if "%1"=="ミクさん" echo ミクさん。おはようございます。
echo 皆さん、おはようございます。
--------



**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼Windowsコマンド。制御文と環境変数▼ABC順
    ▼Windowsコマンド一覧▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > バッチファイル。IF文やFOR文の中で複数コマンドを書く時の注意点
    %変数の使い方
    環境変数の使い方。置換と部分文字列