【バッチファイルについてまとめてみた③】変数の使い方と条件分岐(if文)
こんにちは!
ALH福岡事業所のSHUMAです。
【バッチファイルについてまとめてみた】の第3弾は、『変数の使い方とif文』です。
過去記事は下記リンクよりどうぞ!
【バッチファイルについてまとめてみた①】
【バッチファイルについてまとめてみた② ログの出力と日付取得】
1.変数の宣言と使用方法
バッチファイルで変数を宣言するには、「set」コマンドを使用します。変数名は英語でも日本語でも宣言できます。
また、変数には数値入れることもできますが、数値を入れて計算をする場合は「set」コマンドの後に「/a」オプションを入れる必要があります。
変数を使うには、変数名の両端を「%」で囲むことによって値を参照することが出来ます。
%[変数名]%
@echo off
rem 変数nameに文字列「Qiita」を代入する
set name=Qiita
rem 変数ageに「20+8」を計算した「28」を代入する
set /a age=20+8
rem 変数の値を参照する
echo 私の名前は%name%で年齢は%age%歳です
pause
出力画面には、「私の名前はQiitaで年齢は28歳です」と表示されます。
2.条件分岐の方法
条件分岐は、「if」や「else」、「if else」コマンドを使用ます。
@echo off
rem 変数name1に文字列「Qiita」を代入する
set name1=Qiita
rem 変数name2に文字列「Qiita」を代入する
set name2=Qiita
rem name1とname2を比較する
if %name1% == %name2% (
echo 文字列%name1%と%name2%は同じです
) else (
echo 文字列%name1%と%name2%は同じではありません
)
pause
出力画面には、「文字列QiitaとQiitaは同じです」と表示されます。
条件に否定を使う場合は、以下の通り「if」の後に「not」を追加します。
@echo off
rem 変数name1に文字列「Qiita」を代入する
set name1=Qiita
rem 変数name2に文字列「Kiita」を代入する
set name2=Kiita
rem name1とname2を比較する
if not %name1% == %name2% (
echo 文字列%name1%と%name2%は同じではありません
) else (
echo 文字列%name1%と%name2%は同じです
)
pause
出力画面には、「文字列QiitaとKiitaは同じではありません」と表示されます。
3.数値の比較
条件分岐の中で数値を比較する場合は、以下の演算子を使用します。
「>,<」などの演算子を使っても、正常に処理がされないので注意が必要です。
@echo off
rem 変数num1に数値「10」を代入する
set num1=10
rem 変数num2に数値「5」を代入する
set num2=5
rem num1とnum2を比較する
if %num1% gtr %num2% (
echo %num1%は%num2%より大きい
) else (
echo %num1%は%num2%より小さい
)
pause
出力画面には、「10は5より大きい」と表示されます。
4.注意点(空白スペース)
【変数】
set●name=Qiita
【条件分岐】
if●name1 == name2●(
) else●(
)
5.おわりに
4.注意点(空白スペース)で記載した通り、バッチファイルは半角スペースがコマンドのあるべきところになかったり、全角スペースがあると正常に動作がしなかったりするため、作成していて正常に動かない場合は、いったん落ち着いてこのような注意点を確認してみると良いかもしれません。
↓ ↓ ↓ 採用サイトはこちら ↓ ↓ ↓
↓ ↓ ↓ ALHについてはこちら ↓ ↓ ↓
↓ ↓ ↓ もっとALHについて知りたい? ↓ ↓ ↓