Share via


setlocal

開始在批次檔中本地語系化環境變數。 當地語系化會繼續進行,直到遇到相符的 endlocal 命令或到達批次檔的結尾為止。

語法

setlocal [enableextensions | disableextensions] [enabledelayedexpansion | disabledelayedexpansion]

參數

參數 描述
enableextensions 啟用命令延伸模組,直到遇到相符的 endlocal 命令為止,不論執行 setlocal 命令之前設定為何。
disableextensions 停用命令延伸模組,直到遇到相符的 endlocal 命令為止,不論執行 setlocal 命令之前設定為何。
enabledelayedexpansion 啟用延遲的環境變數擴充,直到遇到相符的 endlocal 命令為止,不論 setlocal 命令執行前的設定為何。
disabledelayedexpansion 停用延遲的環境變數擴充,直到遇到相符的 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 變數,所以當您搭配無效引數使用時,verify 命令會將 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