Win32 環境変数の即時展開 バッチファイルを書いていると、変数が思っても見なかった動きをして、困ってしまうことがあります。例えば @echo off setlocal set HOGEHOGE="foobar" if %HOGEHOGE% == "foobar" ( set HOGEHOGE="hogehuga" echo %HOGEHOGE% ) endlocal といった内容のバッチファイルがあったとします。これをぱっと見ると"hogehuga"という出力がされると期待してしまいますが、実際に実行してみると"foobar"という出力結果が得られます。なぜこのような結果になるかといいますと、各コマンドが実行されるときに環境変数が展開されるのではなく、バッチファイルのテキスト行が読み取られるときに展開が行われてしまうからで、上の例は次のように解釈されているために期待した結果が得られな