バッチ ファイル内の環境変数のローカライズを開始します。 ローカライズは、一致する endlocal コマンドが検出されるか、バッチ・ファイルの末尾に達するまで続行されます。
Syntax
setlocal [enableextensions | disableextensions] [enabledelayedexpansion | disabledelayedexpansion]
Parameters
| Parameter | Description |
|---|---|
| enableextensions | setlocal コマンドが実行される前の設定に関係なく、一致する endlocal コマンドが検出されるまでコマンド拡張を有効にします。 |
| disableextensions | setlocal コマンドが実行される前の設定に関係なく、一致する endlocal コマンドが検出されるまでコマンド拡張を無効にします。 |
| enabledelayedexpansion | setlocal コマンドが実行される前の設定に関係なく、一致する endlocal コマンドが検出されるまで、遅延環境変数の拡張を有効にします。 |
| disabledelayedexpansion | setlocal コマンドが実行される前の設定に関係なく、一致する endlocal コマンドが検出されるまで、遅延環境変数の拡張を無効にします。 |
| /? | コマンド プロンプトにヘルプを表示します。 |
Remarks
スクリプトまたはバッチファイルの外部で 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 変数を使用すると、 verify コマンドは ERRORLEVEL 変数をゼロ以外の値に初期化します。 また、引数 {enableextensions | disableextensions} または {enabledelayedexpansion | disabledelayedexpansion} を指定して setlocal コマンドを使用し、ERRORLEVEL 変数を 1 に設定しない場合、コマンド拡張は使用できません。
Examples
バッチ ファイル内の環境変数をローカライズするには、次のサンプル スクリプトに従います。
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