この記事では、Windowsのバッチファイルの中で使用されるSetコマンドについて
- Setコマンドの概要
- Set /A で利用可能な算術演算子
- Set /A で利用可能な代入演算子
といった観点で詳しく紹介します
Setコマンドは、変数への値設定や算術演算、代入演算など、さまざまな用途で利用することができ、特に、Set /Aコマンドは算術演算や代入演算に特化した機能を提供しています。
Setコマンドの概要
まずバッチファイルの中で計算をするために知っておかなければいけない Set コマンドについて改めて紹介しておきましょう。
set
コマンドは /A
オプションを指定するかどうかによって、代入の方法が異なります。
/A オプション | 説明 |
---|---|
指定しない場合 | 単純な文字列として変数に値を代入します。 代入される値は数値でも文字列でも構いません。この場合、変数には単純なテキストが格納されます。 |
指定した場合 | 代入演算子を使って数値の計算や式の評価を行うことができます。 数値と算術演算子を使用して数式を記述し、その結果を変数に代入することができます。 |
以下に具体的な例を示します。
@echo off
set variable1=5
set /A variable2=5 + 3
echo variable1: %variable1%
echo variable2: %variable2%
pause
上記のコードで、3行目では /A
オプションを使用せず、単純な文字列として値を代入しています。一方、4行目では /A
オプションを使用して数式を評価し、その結果を変数に代入しています。
このバッチファイルの実行結果は次のようになり、variable1
は文字列として代入された値(5)を表示し、variable2
は数式の結果(8)を表示しています。
variable1: 5
variable2: 8
つまり/A
オプションを使用すると数値の計算が可能になりますが、省略すると文字列としての代入が行われます。
Set /A で利用可能な算術演算子
set /A
コマンドでは、以下の算術演算子を利用することができます。
- 加算:
+
- 減算:
-
- 乗算:
*
- 除算:
/
- 剰余: %%
それぞれの算術演算子のサンプルを以下に示します。
@echo off
set /A add_result=5 + 3
echo 加算結果: %add_result%
set /A subtract_result=8 - 2
echo 減算結果: %subtract_result%
set /A multiply_result=4 * 6
echo 乗算結果: %multiply_result%
set /A divide_result=20 / 4
echo 除算結果: %divide_result%
set /A modulus_result=10 %% 3
echo 剰余結果: %modulus_result%
pause
上記のコードでは、それぞれの演算子を使用して数値の計算を行い、結果を変数に代入しています。実行結果は次のようになります。
加算結果: 8
減算結果: 6
乗算結果: 24
除算結果: 5
剰余結果: 1
これらの演算を変数を使って行った例を次に紹介します。
もう一つ次の例もご紹介します。
@echo off
set variable1=5
set variable2=3
set /A temp_result=variable1 + variable2
echo 加算結果: %temp_result%
set /A temp_result=variable1 - variable2
echo 減算結果: %temp_result%
set /A temp_result=variable1 * variable2
echo 乗算結果: %temp_result%
set /A temp_result=variable1 / variable2
echo 除算結果: %temp_result%
set /A temp_result=variable1 %% variable2
echo 剰余結果: %temp_result%
pause
結果は両者とも以下のようになります。
加算結果: 8
減算結果: 2
乗算結果: 15
除算結果: 1
剰余結果: 2
つまり Set /A の中では変数名を %%で囲んでも囲まなくても正しく評価されます。
Set /A で利用可能な代入演算子
set /A
コマンドでは、さらに以下の代入演算子を利用することができます。
- 加算代入:
+=
- 減算代入:
-=
- 乗算代入:
*=
- 除算代入:
/=
- 剰余代入: %%=
それぞれの算術演算子を利用したバッチファイルのサンプルを以下に示します。
@echo off
REM このバッチファイルは、異なる代入演算子(+=、-=、*=、/=、%%=)の使用例を示します
REM 変数の初期化
set variable=10
REM 加算代入(+=)
set /A variable+=5
echo 加算代入結果: %variable%
REM 減算代入(-=)
set /A variable-=3
echo 減算代入結果: %variable%
REM 乗算代入(*=)
set /A variable*=2
echo 乗算代入結果: %variable%
REM 除算代入(/=)
set /A variable/=4
echo 除算代入結果: %variable%
REM 剰余代入(%%=)
set /A variable%%=5
echo 剰余代入結果: %variable%
pause
結果は以下のようになります。
加算代入結果: 15
減算代入結果: 12
乗算代入結果: 24
除算代入結果: 6
剰余代入結果: 1
このバッチファイルの例では変数 variable の値が連続的に変化しているので代入演算子の意味を明確にするために各代入演算子の利用前後での variable の値を確認しておきましょう。
実行前 variable値 |
実行ステートメント | 実行後 variable値 |
説明 |
---|---|---|---|
10 | set /A variable+=5 | 15 | variableに5を加え、結果をvariableに代入しています |
15 | set /A variable-=3 | 12 | variableから3を減じ、結果をvariableに代入しています |
12 | set /A variable*=2 | 24 | variableに2を掛け、結果をvariableに代入しています |
24 | set /A variable/=4 | 6 | variableを4で割り、結果をvariableに代入しています |
6 | set /A variable%%=5 | 1 | variableを5で割った余りを計算し、結果をvariableに代入しています |
特に以下の記事中で使用している For を使ったループの中でカウンタ cnt を+1したいとき
set /A cnt+=1
と記述できるとおしゃれですよね。
この記事が前提としているツールのフォルダ環境について興味を持たれた方は必要に応じて次の記事もご覧ください。 |
@echo off
setlocal enabledelayedexpansion
set cnt=1
for %%n in (%*) do (
echo %%!cnt! : %%n
set /a cnt+=1
)
pause
まとめ
この記事では、Windowsのバッチファイルの中で使用されるSetコマンドについて
- Setコマンドの概要
- Set /A で利用可能な算術演算子
- Set /A で利用可能な代入演算子
といった観点でで紹介しました。
Setコマンドは、環境変数の設定や算術演算、代入演算など、さまざまな用途で利用することができ、特に、Set /Aコマンドは算術演算や代入演算に特化した機能を提供しています。
あなたのバッチファイルにこのSetコマンドを使ってみませんか。
この記事が少しでも皆さんのバッチファイルへの理解の助けになれば幸いです。
あなたのバッチファイルにこのSetコマンドを使ってみませんか。