1. 程式人生 > >批處理的延遲變數擴充套件

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


這個雙!就是延遲擴充套件,等執行時才擴充套件變數。
命令列窗口裡是延遲擴充套件是預設開啟的。
也可以setlocal EnableDelayedExpansion 開啟,setlocal DisableDelayedExpansion 關閉。
關閉後,輸出:
1,!num!
2,!num!
3,!num!
4,!num!
5,!num!
6,!num!
7,!num!
8,!num!
9,!num!
10,!num!



看看下面批處理的命令視窗輸出就能看到!和%擴充套件的不同:
批處理內容:
echo %str%
echo !str!

命令列輸出:
D:\>echo hello word
hello word

D:\>echo !str!
hello word

可以看到第一個執行時,變數已經替換掉了。
當然for裡的%%xxx形式的變數不存在擴充套件問題。


下面順便說一下批處理的特殊符號問題。
批處理的特殊符號如>,|等,如果要作為普通字元輸出,在前面加^即可。
如:
echo ^>
echo ^^

%用這個方法在命令列可以,在批處理裡不行。
在批處理裡要:
echo %%
!在批處理裡要作為普通字元輸出要:
echo ^^!