共用方式為


設定本地環境 (setlocal)

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

語法

setlocal [enableextensions | disableextensions] [enabledelayedexpansion | disabledelayedexpansion]

參數

參數 說明
啟用擴展 啟用命令擴充功能,直到遇到相符 endlocal 命令為止,不論執行 setlocal 命令之前設定為何。
disable擴展 停用命令延伸模組,直到遇到相符 endlocal 命令為止,不論執行 setlocal 命令之前設定為何。
enabledelayedexpansion 啟用延遲的環境變數擴充,直到遇到相符 endlocal 命令為止,不論執行 setlocal 命令之前設定為何。
disableDelayed擴展 停用延遲的環境變數擴充,直到遇到相符 endlocal 命令為止,不論執行 setlocal 命令之前設定為何。
? 在命令提示字元中顯示說明。

備註

  • 如果您在腳本或批處理檔外部使用 setlocal,則沒有任何作用。

  • 當您執行批處理檔時,請使用 setlocal 來變更環境變數。 在您執行 setlocal 之後所做的環境變更是批處理檔的本機。 Cmd.exe 程式會在遇到 endlocal 命令或到達批處理文件結尾時,還原先前的設定。

  • 您可以在批次程式中有多個 setlocalendlocal 命令(也就是巢狀命令)。

  • 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