バッチファイル内で環境変数の値を設定しても値が変更されないことがあります。その場合、次の例のようにIF文やFOR文の中でSETしていないか確認してみてください。
このバッチを実行するとyyyではなくxxxが表示されます。
1 2 3 4 5 6 7 |
@echo off SET VAR=xxx IF "%VAR%"=="xxx" ( SET VAR=yyy ECHO %VAR% ) pause |
その時は環境変数を%では無く!で括って、さらに以下のコマンドを挿入してみてください。
setlocal enabledelayedexpansion
上の例をそのように変更してみます。
1 2 3 4 5 6 7 8 |
@echo off setlocal enabledelayedexpansion SET VAR=xxx IF "!VAR!"=="xxx" ( SET VAR=yyy ECHO !VAR! ) pause |
環境変数の値はデフォルトだと即時に評価されてしまいます。そのような事態を避けるために前述のコマンドが必要になります。このような環境変数を遅延環境変数といいます