バッチファイル | if文やfor文などで変数の値を上書きできない場合の対処法
Windowsのコマンド・プロンプトを実行するバッチファイルにてfor文の中などで変数の値を上書きできない場合の対処方法とサンプルコードを紹介しています。
確認環境
- HP ノートパソコン HP 17s
- OS Windows11 22H2
if文やfor文などで変数の値を上書きできない場合の対処法
デフォルトではバッチファイルのif文やfor文などの中では、変数は初期値が展開される仕組みとなっています。
例えば以下のコードの場合、出力される値は「0」「0」「0」となります。
また、ループ処理後に呼び出した場合は「3」が出力されます。
set x=0
for /l %%i in (1,1,3) do (
set /a x+=1
echo %x%
)
上書きされた変数の値が必要な場合は「setlocal enabledelayedexpansion」を設定する事で、変数の展開を遅延評価する事が可能になります。
遅延展開された変数を出力する場合「!変数名!」を利用します。
setlocal enabledelayedexpansion
set x=0
for /l %%i in (1,1,3) do (
set /a x+=1
echo !x!
)
上記のサンプルコードのようにする事で変数の値は「1」「2」「3」と出力されるようになります。
ディスカッション
コメント一覧
まだ、コメントがありません