チャポケのブログ

勉強したことをまとめておく。

Windowsバッチ 変数

変数の設定と参照

変数名は、大文字と小文字の区別なし。
設定された変数値は、文字列扱い

変数への設定は、setを用いる。
その際、=の前後にスペースを入れないようにする。
スペースを入れると、スペースを含めた変数名・変数値と認識される。

変数を参照する場合は、変数名を%で囲む。

set aaa=abcDE
echo aaa=%aaa%
echo AAA=%AAA%

set bbb = pqrST
echo bbb=%bbb%
echo bbb =%bbb %
aaa=abcDE
AAA=abcDE
bbb=
bbb = pqrST

5行目は、変数"bbb "への設定となるので、
変数"bbb"の参照では空っぽで、
変数"bbb "に変数値" pqrST"が格納されている。
この変数値は、"pqrST"の前に半角スペースがあるのに注意。

数値・計算式の結果の、変数への設定

set /Aを用いると、数値・計算式の結果を変数に設定できる。
この場合は、=の前後にスペースを入れても構わない
スペースを入れても、区切り文字と解釈される。

set /A num1=123
set /A num2= 1 + 1
set /A num3 = 2 * 3

echo num1=%num1%
echo num2=%num2%
echo num3=%num3%
echo num3 =%num3 %
num1=123
num2=2
num3=6
num3 =

3行目は、変数"num3"への設定となるので、
変数"num3"に計算結果が格納されて、
変数"num3 "は空っぽになっている。

変数として扱える数値

数値は、範囲-2147483647~2147483647(2の31乗-1)の整数のみで、小数値は扱えない。
小数点は正しく解釈されないで、エラーとなる。

set /A numP1 = 2147483647
echo numP1=%numP1%

set /A numP2 = 2147483648
echo numP2=%numP2%

set /A numN1 = -2147483647
echo numN1=%numN1%

set /A numN2 = -2147483648
echo numN2=%numN2%

set /A numD1 = 1.23
echo numD1=%numD1%
numP1=2147483647
無効な数字です。数値は 32 ビットで表記される数値です。
numP2=
numN1=-2147483647
無効な数字です。数値は 32 ビットで表記される数値です。
numN2=
演算子がありません。
numD1=1

変数の結合

変数は、setを用いて次のようにして結合できる。
このとき、変数の前後に任意の文字列を追加することもできる。

set str1=豚骨醤油
set str2=ラーメン
set /A nedan = 700

set str3=%str1%%str2%
echo str3=%str3%

set str4=大盛も%str3%%nedan%echo str4=%str4%
str3=豚骨醤油ラーメン
str4=大盛も豚骨醤油ラーメンは700円