開始在批處理檔中本地化環境變數。 當地語系化會繼續進行,直到遇到相符 endlocal 命令或到達批處理文件結尾為止。
語法
setlocal [enableextensions | disableextensions] [enabledelayedexpansion | disabledelayedexpansion]
參數
參數 | 說明 |
---|---|
啟用擴展 | 啟用命令擴充功能,直到遇到相符 endlocal 命令為止,不論執行 setlocal 命令之前設定為何。 |
disable擴展 | 停用命令延伸模組,直到遇到相符 endlocal 命令為止,不論執行 setlocal 命令之前設定為何。 |
enabledelayedexpansion | 啟用延遲的環境變數擴充,直到遇到相符 endlocal 命令為止,不論執行 setlocal 命令之前設定為何。 |
disableDelayed擴展 | 停用延遲的環境變數擴充,直到遇到相符 endlocal 命令為止,不論執行 setlocal 命令之前設定為何。 |
? | 在命令提示字元中顯示說明。 |
備註
如果您在腳本或批處理檔外部使用 setlocal,則沒有任何作用。
當您執行批處理檔時,請使用 setlocal 來變更環境變數。 在您執行 setlocal 之後所做的環境變更是批處理檔的本機。 Cmd.exe 程式會在遇到 endlocal 命令或到達批處理文件結尾時,還原先前的設定。
您可以在批次程式中有多個 setlocal 或 endlocal 命令(也就是巢狀命令)。
setlocal 命令會設定 ERRORLEVEL 變數。 如果您傳遞 {enableextensions | disableextensions} 或 {enabledelayedexpansion | disabledelayedexpansion},ERRORLEVEL 變數會設定為 0 (零)。 否則,它會設定為 1。 您可以在批次文稿中使用這項資訊來判斷延伸模組是否可用,如下列範例所示:
verify other 2>nul setlocal enableextensions if errorlevel 1 echo Unable to enable extensions
因為 cmd 在停用命令延伸模組時不會設定 ERRORLEVEL 變數,所以當您搭配無效自變數使用時,驗證 命令會將 ERRORLEVEL 變數初始化為非零值。 此外,如果您使用 setlocal 命令搭配自變數 {enableextensions | disableextensions} 或 {enabledelayedexpansion | disabledelayedexpansion},而且它不會將 ERRORLEVEL 變數設定為 1,命令延伸模塊無法使用。
範例
若要將批次處理檔中的環境變數本地化,請遵循下列範例腳本:
rem *******Begin Comment**************
rem This program starts the superapp batch program on the network,
rem directs the output to a file, and displays the file
rem in Notepad.
rem *******End Comment**************
@echo off
setlocal
path=g:\programs\superapp;%path%
call superapp>c:\superapp.out
endlocal
start notepad c:\superapp.out