https://qiita.com/tana_tomo_1025/items/7f824a154f004f610386
遅延環境変数とは、Windowsバッチファイルにおいて遅延評価される環境変数のこと。
まず前提としてWindowsバッチファイルでは、変数はコマンド実行前に一括で展開される。この展開は括弧で囲まれた複数行が実行されるときには、すべての行の変数が展開されてから実行される。
例えば以下コードだと「num1=0」という表示がされる。
set num=0 ( set /a num = num+1 echo num1=%num% )
これを解決するために環境変数の評価を「遅延」して行うのが遅延環境変数。
: 遅延環境変数を使うことを宣言 setlocal enabledelayedexpansion set num=0 ( set /a num = num+1 : %ではなく!で囲んで遅延環境変数であることを示す echo num1=!num! )