cmd SETLOCAL使用介紹
SETLOCAL
在 cmd (Windows 命令提示符) 腳本中,@setlocal 是一個(gè)常用的組合命令,由兩部分組成:@ 和 setlocal。
@:在腳本中,@ 用于阻止命令的顯示。通常,在執(zhí)行批處理文件時(shí),每一行命令都會(huì)被顯示出來(lái)。當(dāng)你在一行命令前加上 @,這行命令就不會(huì)在命令提示符窗口中顯示出來(lái)。這經(jīng)常用于使腳本的輸出更加干凈、整潔。
setlocal:這是一個(gè)命令,它開始局部化環(huán)境更改。通常在批處理文件中使用,以確保在腳本中所做的任何環(huán)境更改(例如設(shè)置或修改環(huán)境變量)不會(huì)影響到調(diào)用此批處理的上下文或其他批處理文件。當(dāng)腳本執(zhí)行完畢,使用 endlocal 命令可以結(jié)束這種局部環(huán)境,恢復(fù)所有的環(huán)境設(shè)置到 setlocal 之前的狀態(tài)。
因此,@setlocal 的組合用途是在批處理文件的開始部分使環(huán)境更改局部化,同時(shí)不顯示這條命令本身。這是編寫批處理腳本時(shí)的一種常見做法,以確保腳本不會(huì)無(wú)意中修改全局環(huán)境設(shè)置。
下面是幫助文檔
C:\Documents and Settings\Administrator>setlocal /?
開始批處理文件中環(huán)境改動(dòng)的本地化操作。在執(zhí)行 SETLOCAL 之后
所做的環(huán)境改動(dòng)只限于批處理文件。要還原原先的設(shè)置,必須執(zhí)
行 ENDLOCAL。達(dá)到批處理文件結(jié)尾時(shí),對(duì)于該批處理文件的每個(gè)
尚未執(zhí)行的 SETLOCAL 命令,都會(huì)有一個(gè)隱含的 ENDLOCAL 被執(zhí)行。
SETLOCAL
如果命令擴(kuò)展名被啟用,SETLOCAL 會(huì)如下改變:
SETLOCAL 批命令現(xiàn)在可以接受可選參數(shù):
ENABLEEXTENSIONS / DISABLEEXTENSIONS
啟動(dòng)或停用命令處理器擴(kuò)展名。詳細(xì)信息,請(qǐng)參閱 CMD /?。
ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
啟動(dòng)或停用延緩環(huán)境變量擴(kuò)展名。詳細(xì)信息,請(qǐng)
參閱 SET /? 。
無(wú)論在 SETLOCAL 命令之前它們的設(shè)置是什么,這些修改會(huì)一直
保留到匹配的 ENDLOCAL 命令。
如果有一個(gè)參數(shù),SETLOCAL 命令將設(shè)置 ERRORLEVEL 的值。
如果有兩個(gè)有效參數(shù)中的一個(gè),該值則為零。用下列技巧,您
可以在批腳本中使用這個(gè)來(lái)決定擴(kuò)展名是否可用:
VERIFY OTHER 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 echo Unable to enable extensions
這個(gè)方法之所以有效,是因?yàn)樵?CMD.EXE 的舊版本上,SETLOCAL
不設(shè)置 ERRORLEVEL 值。具有不正確參數(shù)的 VERIFY 命令將
ERRORLEVEL 值初始化成非零值。
開始批處理文件中環(huán)境改動(dòng)的本地化操作。在執(zhí)行 SETLOCAL 之后所做的環(huán)境改動(dòng)只限于批處理文件。要還原原先的設(shè)置,必須執(zhí)行 ENDLOCAL。 達(dá)到批處理文件結(jié)尾時(shí),對(duì)于該批處理文件的每個(gè)尚未執(zhí)行的 SETLOCAL 命令,都會(huì)有一個(gè)隱含的 ENDLOCAL 被執(zhí)行。
例:
@ECHO OFF SET PATH /*察看環(huán)境變量PATH PAUSE SETLOCAL SET PATH=E:\TOOLS /*重新設(shè)置環(huán)境變量PATH SET PATH PAUSE ENDLOCAL SET PATH
從上例我們可以看到環(huán)境變量PATH第1次被顯示得時(shí)候是系統(tǒng)默認(rèn)路徑。被設(shè)置成了E:\TOOLS后顯示為E:\TOOLS,但當(dāng)ENDLOCAL后我們可以看到他又被還原成了系統(tǒng)的默認(rèn)路徑。但這個(gè)設(shè)置只在該批處理運(yùn)行的時(shí)候有作用。當(dāng)批處理運(yùn)行完成后環(huán)境變量PATH將會(huì)還原。
相關(guān)文章
cacls命令設(shè)置文件及其文件夾權(quán)限的方法
這篇文章主要介紹了使用cacls命令設(shè)置文件及其文件夾權(quán)限的方法,需要的朋友可以參考下2014-07-07實(shí)現(xiàn)每個(gè)星期的每一天指定時(shí)間關(guān)機(jī)的dos/bat
實(shí)現(xiàn)每個(gè)星期的每一天指定時(shí)間關(guān)機(jī)的dos/bat...2007-07-07systeminfo 系統(tǒng)命令快速查看你的系統(tǒng)幾歲了
Windows系統(tǒng)安裝使用到現(xiàn)在,想知道它的“高齡”是多少嗎?2008-03-03