DOS?批處理如何使用變量的延遲擴展(講解簡約版)
如何使用變量延遲擴展
使用變量延遲擴展之前,需要先開啟cmd.exe的變量延遲展開特性
獲取延遲變量值,變量名兩邊需要加“!”,而不是“%”(變量展開時,使用“%”)
如何開啟cmd.exe的變量延遲擴展特性
cmd.exe的變量延遲展開特性缺省是關閉的,開啟它的方法目前有兩個:
1、命令行環(huán)境中,使用“ cmd.exe /v:on ” 命令,它會打開一個新的命令行環(huán)境,在使用“ cmd.exe /v:off ” 命令開啟一個新的命令行環(huán)境(或者使用exit退出這個環(huán)境)之前,變量延遲擴展特性始終有效。示例如下:
C:\>cmd /v:off Microsoft Windows [版本 6.1.7601] 版權所有 (c) 2009 Microsoft Corporation。保留所有權利。 C:\>set first=1 C:\>set first=2 && echo %first% 1 C:\>cmd /v:on Microsoft Windows [版本 6.1.7601] 版權所有 (c) 2009 Microsoft Corporation。保留所有權利。 C:\>echo %first% 2 C:\>set first=3 && echo %first% 2 C:\>echo %first% 3 C:\>set first=4 && echo !first! 4 C:\>
2、在批處理文件中,在下面兩個局部空間之一:
“setlocal EnableDelayedExpansion” 和 “endlocal”兩個命令之間的局部空間中
“setlocal EnableDelayedExpansion” 和 批處理文件的結尾處之間的局部空間中則會
自動啟用cmd.exe的變量延遲展開特性
對變量的修改被限制到該局部空間中
也就是說, 在“endlocal” 命令(或退出批處理文件)之后,cmd.exe的變量延遲擴展特性和在該局部空間中對變量的所做的修改都將一同消失。
示例
demo.bat的內容如下:
::demo.bat @echo off set var=out setlocal EnableDelayedExpansion set var=one for %%a in (a.txt) do ( set var=two echo !var! for %%a in (b.txt) do ( echo !var! set var=three echo !var! ) ) endlocal echo !var! echo %var%
運行
C:\>demo
two
two
three
!var!
out
C:\>
如果想更深入的了解enabledelayedexpansion詳解可以參考這篇文章
到此這篇關于DOS 批處理如何使用變量的延遲擴展(講解簡約版)的文章就介紹到這了,更多相關DOS延遲擴展內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Getmac返回計算機中所有網(wǎng)卡的媒體訪問控制 (MAC) 地址以及每個地址的網(wǎng)絡協(xié)議列表
Getmac返回計算機中所有網(wǎng)卡的媒體訪問控制 (MAC) 地址以及每個地址的網(wǎng)絡協(xié)議列表...2007-09-09