バッチファイルで引数を扱う場合に入力パラメータ(引数)が「""(空文字)」であるかどうかを判定したいことがあります。
このような場合の方法について説明します。
文字列の比較となるため、IFコマンドを利用します。
IFコマンドにパラメータ(または、変数名)を指定する場合、パラメータ(変数)の値が「""(空文字)」であるとエラーが発生し、処理が中断されてしまう点に注意して下さい。
そのため、「IF %1 EQU "値"」のように記述していると、変数の内容が空文字の場合には、エラーが発生します。
この事象を回避するには、「"(二重引用符)」で変数名を囲む必要があります。
以下、サンプル。
このような場合の方法について説明します。
文字列の比較となるため、IFコマンドを利用します。
IFコマンドにパラメータ(または、変数名)を指定する場合、パラメータ(変数)の値が「""(空文字)」であるとエラーが発生し、処理が中断されてしまう点に注意して下さい。
そのため、「IF %1 EQU "値"」のように記述していると、変数の内容が空文字の場合には、エラーが発生します。
この事象を回避するには、「"(二重引用符)」で変数名を囲む必要があります。
以下、サンプル。
《事前準備》
1.メモ帳を起動する。
2.以下のコマンドを入力する。
3.ファイルを保存する。
ファイル名 :Test.bat
ファイルの種類:すべてのファイル
保存場所 :Cドライブの直下
《コマンド》
以下、上記の実行手順です。
1.コマンドプロンプトを起動する。
[スタート]-[プログラム]-[アクセサリ]-[コマンドプロンプト]を選択する。
2.以下のコマンドを入力する。
3.結果を確認する。
4.以下のコマンドを入力する。
5.結果を確認する。
上記の通り、引数を指定しなかった場合には、パラメータが空文字とみなされます。
そのため、固定値として設定した「abc」という値が表示されます。
【補足事項】
・試しにパラメータ(%1)を「"(二重引用符)」で囲まないで実行してみましょう。
→エラーが発生するため、途中で強制的に終了してしまいます。
・変数は、「"%変数名%"」で値を参照することができます。
→パラメータの場合には、「"%何番目のパラメータかを指す番号"」で値が参照できます。
1.メモ帳を起動する。
2.以下のコマンドを入力する。
3.ファイルを保存する。
ファイル名 :Test.bat
ファイルの種類:すべてのファイル
保存場所 :Cドライブの直下
《コマンド》
ECHO OFF
IF "%1" EQU "" (
SET PARAM1=abc
) ELSE (
SET PARAM1=%1
)
ECHO %PARAM1%
ECHO ON
PAUSE
以下、上記の実行手順です。
1.コマンドプロンプトを起動する。
[スタート]-[プログラム]-[アクセサリ]-[コマンドプロンプト]を選択する。
2.以下のコマンドを入力する。
C:\< Test.bat
3.結果を確認する。
abc
4.以下のコマンドを入力する。
C:\< Test.bat 123
5.結果を確認する。
123
上記の通り、引数を指定しなかった場合には、パラメータが空文字とみなされます。
そのため、固定値として設定した「abc」という値が表示されます。
【補足事項】
・試しにパラメータ(%1)を「"(二重引用符)」で囲まないで実行してみましょう。
→エラーが発生するため、途中で強制的に終了してしまいます。
・変数は、「"%変数名%"」で値を参照することができます。
→パラメータの場合には、「"%何番目のパラメータかを指す番号"」で値が参照できます。
ECHO %PARAM1%
の間違い