遅延環境変数

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!
)