1. 程式人生 > 其它 >Bat指令碼之延時變數cmd /v:on

Bat指令碼之延時變數cmd /v:on

延時環境變數作用即工作原理:

​ 當準備執行一條命令時,命令直譯器會檢查語句中是否有環境變數,如果有就會先將變數的值讀取出來賦給變數,就像初始化,會將已知變數先賦值。這會導致語句中多次使用的某個環境變數的值都是一樣的都是一個定值。

​ 延時環境變數,開啟方式如下,使用!xx!包裹,不是%xx%,會在變數使用的時候才進行讀值賦值,不會在一開始就賦值。

舉個例子:

C:\Users\98483>set it=1
C:\Users\98483>set /a it+=1 & echo %it%
21
C:\Users\98483>echo %it%
2

我們需要的輸出是22 要加1,但是由於直譯器會在開始的時候就給環境變數附上值,所以echo %it%沒有加1,但是再單獨執行echo %it% 會發現it=2了

cmd /v  開啟延時變數
C:\Users\98483>cmd /v
Microsoft Windows [版本 10.0.19042.928]
(c) Microsoft Corporation。保留所有權利。

C:\Users\98483>set /a it+=1 & echo %it%
33
  1. cmd下開啟/關閉延遲環境變數
在cmd下開啟或延遲環境變數用/v引數:
cmd /v:on    //開啟延遲環境變數 直接cmd /v 也可以
cmd /v:off   //關閉延遲環境變數

cmd 字串也可以使用:
cmd /v /c "set it=1 & set /a it+=1 & echo !it!"
  1. 批處理中開啟/關閉延遲環境變數
在批處理中開啟或關閉延遲環境變數用setlocal命令:
setlocal EnableDelayedExpansion    //開啟延遲環境變數
setlocal DisableDelayedExpansion   //關閉延遲環境變數