Windows のコマンドプロンプト CMD において、環境変数に遅延展開というものがあることを知ってる人も多いと思う。 CMD は、コマンドを1ステートメントづつ実行するため、IF 文や FOR 文の中で環境変数を扱うと、嬉しくないことが起こる。たとえば、 SET a=1 SET b=1 IF "%a%"=="1" ( SET b=2 ECHO a=%a%, b=%b% ……(x) ) ELSE ( ECHO a=%a%, b=%b% ) ECHO a=%a%, b=%b%このようなバッチスクリプトを実行すると、 1: SET a=1 2: SET b=1 3: IF "1"=="1" ( : SET b=2 : ECHO a=1, b=1 ……(x) : ) ELSE ( : ECHO a=1, b=1 : ) 4: ECHO a=1, b=2というステートメントに展開される。このこと