批處理中處理變數延遲

2021-09-01 12:48:58 字數 465 閱讀 3020

rem 比較兩種異同:體會變數延遲

@echo off

set a=4

set a=5 & echo %a%

pause

setlocal enabledelayedexpansion

set c=4

set c=5 & echo !c!

pause

批處理執行機制:批處理讀取命令按行讀取,在處理之前要完成必要的預處理工作,這其中就包括對該行命令中的變數賦值。在沒有開啟變數延遲的情況下,某條命令列中的變數改變要到下一行才會體現。上面例子中未使用變數延遲的情況下:第四行體現的是第三行預處理的結果,a輸出到螢幕上為4,毫無疑問,第四行的預處理結果到第五行才能體現。當我們啟用變數延遲:setlocal enabledelayedexpansion,並且變數使用「!!」括起來,這時候會發現c輸出為5,這次不是在先給該行變數賦值,而是在執行過程中給變數賦值。

批處理文章 預處理 變數延遲 call

三 call引出的一些問題 一 call與脫字字元 例 echo off set p var 等。這裡請允許我自定義兩個名詞 主預處理過程 系統本身預處理過程的總稱,其中包括了 型和 型。次預處理過程 由於call命令引起的預處理過程的總稱。其它特殊字元 是在主預處理過程中被系統識別的,而在次預處理...

批處理的延遲變數擴充套件

set num 0 for l i in 1,1,10 do set a num 1 echo i,num 這個程式應該輸出 1,12,2 3,34,4 5,56,6 7,78,8 9,910,10 實際輸出 1,02,0 3,04,0 5,06,0 7,08,0 9,010,0 這是因為批處理程式...

批處理 延遲環境變數擴充套件

延遲變數全稱 延遲環境變數擴充套件 要理解這個東西 我們還得先理解一下什麼叫擴充套件 cmd 在解釋我們的命令的時候 首先會讀取命令列一條完整的命令 然後對其進行一些命令格式的匹配操作 看你所輸入的命令格式是不是符合他的要求.如果我們要在我們的命令中引用一些變數,那麼我們如何讓 cmd在解釋我們的命...