バッチファイルの中で変数を利用してみました。
変数を宣言する
変数の宣言は [set] コマンドを利用して宣言します。
[set] コマンド自体は環境変数を定義するものですので、バッチファイルでは環境変数を利用して変数を扱うということになります。
set value=hoge
echo %value%
pause
上記では変数 [value] に文字列を入力して、その変数を出力させています。
この手のコマンドでよく利用されている [@echo off] ですが、コマンド実行結果を見るために今回はあえて記載しません。
逆に [pause] はバッチファイル実行後にプロンプトを残すために記載しています。
[注意点] 空白は文字列として認識される
コードを書いていると = の前後などはスペースを空けたくなることもあるかと思いますが、コマンドプロンプト上では空白も文字列として認識されます。
なので以下のように記載をすると出力してほしい変数の値が出てきませんので注意が必要です。
set value = hoge
echo %value%
pause
上記だと1行目で value を変数として宣言できないため、2行目で echo だけが実行された形になります。
set のオプション
その他にも set コマンドにはオプションがあります。
/a :等号の右側の文字列が評価する数式であることを指定
[/a] オプションを利用すると等号の右側の文字列を評価する数式として扱うことができます。
・算術計算
chcp 65001
//足し算
set /a addition=1+1
echo %addition%
//掛け算
set /a multiplication=2*8
echo %multiplication%
pause
・変数を別の変数の計算に利用
chcp 65001
set /a addition=10
set /a multiplication="%addition%*7"
echo %multiplication%
pause
[chcp] というコマンドがいきなり出てきましたが、これは文字コードを指定するコマンドです。
文字化けが起こらないように記載しています。
文字コードについては以下の記事でも記載しているのでそちらも参考にしてください。
ちなみに65001はUTF-8の文字コードです。
/p :ユーザーの入力値を変数として設定
[/p] オプションを利用するとユーザーの入力値を変数として設定することができます。
・名前を入力させてその名前に挨拶をする
@echo off
chcp 65001
set /p input= enter your name:
echo.
echo hello! %input%.
echo.
pause
3行目の [=] の右側は [:] まではユーザー側に表示させたい文字列を記載することができます。
今回は「名前を入力してください」となるように記載しています。
また、結果が分かりやすいように1行目に [@echo off] も記載しています。
3行目と5行目に記載している [echo.] は出力時に1行空けるために入れているコマンドです。
set コマンドを単体で実行
上記でも少し触れましたが、[set] コマンド自体は環境変数を定義するものです。
なので [set] コマンドを単体で実行すると既存で設定されている環境変数が一覧として表示されます。
また、変数として利用するために格納した任意の値も表示されます。
set hogehoge=hogehoge
set
pause
上記では [HOMEPATH] などの既存の環境変数が確認できます。
また、既存の環境変数の他にも [hogehoge] というバッチファイル内で設定した変数が環境変数として定義されていることが分かります。