見出し画像

【バッチファイルについてまとめてみた③】変数の使い方と条件分岐(if文)

こんにちは!
ALH福岡事業所のSHUMAです。
【バッチファイルについてまとめてみた】の第3弾は、『変数の使い方とif文』です。

過去記事は下記リンクよりどうぞ!

【バッチファイルについてまとめてみた①】

【バッチファイルについてまとめてみた② ログの出力と日付取得】


1.変数の宣言と使用方法

 バッチファイルで変数を宣言するには、「set」コマンドを使用します。変数名は英語でも日本語でも宣言できます。
 また、変数には数値入れることもできますが、数値を入れて計算をする場合は「set」コマンドの後に「/a」オプションを入れる必要があります。

【文字列】
set [変数名]=[変数に代入したい文字列]

【数値】
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」コマンドを使用ます。

if [文字列1] == [文字列2] (
 [文字列同士が等しい場合に実行する処理]
) 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より大きい」と表示されます。

※上記コードでは、num1,num2の数値の宣言で「/a」オプションを使っていませんが、変数の中で「+、-、*、/、%」などの演算子を使う計算が無い数値の比較であれば、「/a」オプションは必要ありません。

4.注意点(空白スペース)

【変数】
set●name=Qiita

・setと変数名の間(●)には半角スペースを入れる
→半角スペースがなかったり、全角スペースが入ったりすると正常に動作しない
・変数名と=の間にスペースは入れない
→同様、バッチが正常に動作しない為注意が必要
・=と値の間にスペースは入れない
→値にスペースも入ってしまう
例)「 Qiita」

【条件分岐】
if●name1 == name2●(
) else●(
)

・●があるところに半角スペース(全角でも可)を入れる
→半角、もしくは全角スペースがなければ、正常に動作しない

5.おわりに

 4.注意点(空白スペース)で記載した通り、バッチファイルは半角スペースがコマンドのあるべきところになかったり、全角スペースがあると正常に動作がしなかったりするため、作成していて正常に動かない場合は、いったん落ち着いてこのような注意点を確認してみると良いかもしれません。





↓ ↓ ↓ 採用サイトはこちら ↓ ↓ ↓


↓ ↓ ↓ ALHについてはこちら ↓ ↓ ↓


↓ ↓ ↓ もっとALHについて知りたい? ↓ ↓ ↓




この記事が参加している募集