目次
バッチファイル内で計算を行う
バッチファイル内で簡単な計算を行う方法を紹介します。ここでいう簡単な演算とは整数の「四則演算」と「割り算の余りの計算」です。バッチファイルでは小数などの実数は扱えません。あくまでも整数のみになります。
計算に使用するコマンドは「set」コマンドです。元々は変数を代入するコマンドですが、計算に使用することもできます。計算に使用する場合はオプション「/a」を付けて右側に計算式を書きます。
以下のバッチファイル(wa.bat)は「1+1」の計算を行って変数「wa」に解を代入しています。
1 2 3 4 |
@echo off set /a wa=1+1 echo 1+1=%wa% |
以下、実行結果です。
ここで注意すべきは、計算を行うときは必ず「/a」オプションを付けることです。「/a」を指定しないと、「1+1」が変数「wa」に文字列として代入されてしまい、計算されません(以下、「/a」を付けない場合の実行結果)。
計算演算子には以下の5つが用意されています。
+ | 和 |
– | 差 |
* | 積 |
/ | 商 |
% | 余り |
以下は四則演算および余りの計算を行ったバッチファイル(cal.bat)です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
@echo off rem 値の設定 set a=5 set b=2 rem 計算 set /a wa=%a%+%b% set /a sa=%a%-%b% set /a seki=%a%*%b% set /a sho=%a%/%b% set /a amari=%a%%%b% rem 解を表示 echo %a% + %b% = %wa% echo %a% - %b% = %sa% echo %a% * %b% = %seki% echo %a% / %b% = %sho% echo %a% %% %b% = %amari% |
始め、4,5行目で変数「a」と「b」に値を代入していますが、このときは計算を行っているわけではないので、「/a」オプションは必要ありません。「/a」オプションが必要なのは、8行目からの計算を行うときのみです。
以下、実行結果です。
注意すべきは、解の出力で余りの記号「%」を出力するとき、「%%」と記述することです(19行目)。これは「%」がバッチファイルでは特殊文字であるためです。特殊文字の出力に関しては「特殊文字を出力する -やりたいこと検索-」を参照して下さい。
( )を付けて優先的に計算
通常の計算式と同様、計算式の( )で囲った中は優先的に計算されます。
以下にその例(kakko.bat)を示します。
1 2 3 4 5 6 7 8 9 10 11 |
@echo off rem 計算 set /a ans=8*2+5-2 set /a ans=8*(2+5)-2 set /a ans=8*((2+5)-2) rem 解の表示 echo 8*2+5-2=%ans1% echo 8*(2+5)-2=%ans2% echo 8*((2+5)-2)=%ans3% |
5行目のように二重括弧も使用できます。
以下、実行結果です。
( )の付け方で計算順が変わり、すべて違う解になりました。
左辺の値を使用した特殊な記述
左辺の変数と右辺の値を計算して左辺に代入するとき、すなわち以下のような式を考えます。
1 |
set /a count=count+1 |
この式は処理の回数などをカウントするためのカウンターとしてよく使用されますが、以下のように記述することもできます。
1 |
set /a count+=1 |
上記の2つの式はまったく同じ動作をします。
「count=count+1」という式はあまりにも頻繁に使用するので、簡単な書き方を用意しプロミングを少し楽にしてあります。この記述はバッチファイルだけでなく、他の多くのコンピュータ言語でも共通に使用されています。
もちろん、和だけでなく5つすべての演算子について同様の書き方が用意されています。
count+=[数値] ⇔ count=count+[数値]
count-=[数値] ⇔ count=count-[数値]
count*=[数値] ⇔ count=count*[数値]
count/=[数値] ⇔ count=count/[数値]
count%=[数値] ⇔ count=count%[数値]
ただし、慣れないと逆に分かりにくくなってしまう場合のあるため、自分が理解しやすい方を使えばよいと思います。