
關于延時變量
- @echo off
- set a=1
- for /l %%i in (1 1 10) do (
- set a=%%i
- echo %a%
- )
- pause
nclick="copycode($('code0'));">復制代碼
- @echo off
- for /l %%i in (1 1 10) do (
- set a=%%i
- echo %a%
- )
- pause
nclick="copycode($('code1'));">復制代碼
- @echo off
- setlocal enabledelayedexpansion
- for /l %%i in (1 1 10) do (
- set a=%%i
- echo !a!
- )
- pause
nclick="copycode($('code2'));">復制代碼
- @echo off
- setlocal enabledelayedexpansion
- for /l %%i in (1 1 10) do (
- set a=%%i
- echo %a%
- )
- pause
nclick="copycode($('code3'));">復制代碼
第一個,顯示10個1.第二個,顯示10個ECHO 處于關閉狀態。第三個,顯示1~10.第四個,顯示10個ECHO 處于關閉狀態.在CMD中連續兩次運行第四個批處理,第一次顯示10個ECHO 處于關閉狀態,第二次顯示10個10.從現象上看,批處理中的%var%有點類似于靜態常量,在調用的時候只是單純替換。而開啟了變量延時之后用!var!可以得到實時值,但是%var%仍為靜態常量特性,直到for 循環完畢,有點類似于線程同步間的變量鎖定,在FOR期間,%var%值被鎖定,此時在任意條件下調用它,為鎖定前值,而!var!則是取的鎖定中的變量實時值。