コマンド: "SETLOCAL" がオンです Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. 利用可能
コマンドの例 "SETLOCAL"
の
`SETLOCAL`Windows コマンド プロンプトのコマンドは、バッチ ファイルで環境変数をローカルに設定するために使用されます。使用方法の例をいくつか示します
`SETLOCAL`:
例 1: ローカル環境変数を設定します:
@ECHO OFF
SETLOCAL
SET 地元_VARIABLE=コンテンツ
ECHO %地元_VARIABLE%
説明:この例では、環境変数
`地元_VARIABLE`地域的に限定されたエリア内(
`SETLOCAL`そして
`ENDLOCAL`) であり、この範囲内でのみ使用できます。
例 2: 以前のステータスにリセット:
@ECHO OFF
SET GLOBALE_VARIABLE=グローバルコンテンツ
SETLOCAL
SET 地元_VARIABLE=ローカルコンテンツ
ECHO 地元 Variable: %地元_VARIABLE%
ECHO Globale Variable: %GLOBALE_VARIABLE%
ENDLOCAL
ECHO 地元 Variable (地域限定エリア外): %地元_VARIABLE%
説明:これはローカル環境変数です。
`地元_VARIABLE`地域限定のエリア内で設定および使用されます。後
`ENDLOCAL`スクリプトは前の状態に戻り、ローカル変数はローカル スコープ外では使用できなくなります。
例 3: SETLOCAL: のネスト
@ECHO OFF
SETLOCAL
SET VARIABLE1=価値1
ECHO 内側エリア: %VARIABLE1%
SETLOCAL
SET VARIABLE2=価値2
ECHO 外部エリア: %VARIABLE1%, %VARIABLE2%
ENDLOCAL
ECHO 地元エリア外: %VARIABLE1%, %VARIABLE2%
説明:ここは
`SETLOCAL`- コマンドが 2 回ネストされています。変数
`VARIABLE2`内側の局所領域でのみ表示されますが、
`VARIABLE1`外部領域と内部領域で表示されます。
例 4: 高度な環境変数処理を有効にする:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARIABLE=コンテンツ
ECHO 遅れる前に Expansion: %VARIABLE%
SET VARIABLE=新しいコンテンツ
ECHO 遅延後 Expansion: !VARIABLE!
説明:を使用して
`ENABLEDELAYEDEXPANSION`環境変数には感嘆符を付けることができます
`!`パーセント記号の代わりに
`%`遅延拡張に使用されます。
の
`SETLOCAL`この環境では、変数をバッチ ファイルに対してローカルに設定できるため、変更はスクリプト全体にグローバルに適用されるのではなく、限られた領域にのみ適用されます。これは、環境変数への変更をスクリプトの特定のセクション内に制限する場合に特に便利です。
"SETLOCAL" Microsoft Windows ヘルプからの抜粋
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\WINNT>
バッチ ファイルで環境変更のローカライズを開始します。SETLOCAL を実行した後で
変更した環境設定は、そのバッチ ファイルだけで有効です。前の設定を復元するときは
ENDLOCAL を実行しなければなりません。バッチ スクリプトの終わりに達したとき、
暗示的な ENDLOCAL が、そのバッチ スクリプトによって発行されたすべての未完了の
SETLOCAL コマンドのために実行されます。
SETLOCAL
コマンド拡張機能を有効にすると、SETLOCAL は次のように変更されます:
SETLOCAL バッチ コマンドは、オプション引数を受け取ることができます:
ENABLEEXTENSIONS / DISABLEEXTENSIONS
は、コマンド処理機能を有効または無効にできます。詳細に
ついては、CMD /? を参照してください。
ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
は、遅延環境変数の展開を有効または無効にできます。詳細
については、CMD /? を参照してください。
これらの変更は、SETLOCAL コマンドの実行前の設定にかかわらず、対応する
ENDLOCAL コマンドを実行するまで継続されます。
SETLOCAL コマンドに引数を指定すると、ERRORLEVEL フ値が設定されます。
2 つの有効な引数が指定された場合は 0、そうでない場合は 1 になります。
この機能をバッチ スクリプトで使って、拡張機能が利用可能かどうかを判断
することができます。それには、次のように入力します:
VERIFY OTHER 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 echo 拡張機能を有効にできません
この方法が使えるのは、古いバージョンの CMD.EXE では、SETLOCAL は
ERRORLEVEL の値を設定しないためです。VERIFY コマンドに誤った引数を
指定すると、ERRORLEVEL の値は 0 以外の値に初期化ウれます。
重要な情報、"SETLOCAL" コマンドのヒント
はい、次の場合に考慮すべき重要な側面がいくつかあります。
`SETLOCAL`Windows コマンド プロンプトまたはバッチ スクリプト内のコマンド:
1.
限定された範囲: `SETLOCAL`環境変数の限定されたスコープを作成します。このスコープ内で環境変数を変更しても、グローバル環境や他のローカライズされたスコープには影響しません。ご了承ください
`SETLOCAL`そして
`ENDLOCAL`ペアで使用する必要があります。
SETLOCAL
REM ... ここでは、環境変数への変更はローカルです
ENDLOCAL
2.
ネスト:`SETLOCAL`ネストして複数のローカライズされたエリアを作成します。みんな
`SETLOCAL`ただし、適切なものを使用する必要があります
`ENDLOCAL`終了される。
SETLOCAL
REM 内部局所領域
SETLOCAL
REM さらに深い局所領域
ENDLOCAL
ENDLOCAL
3.
遅延拡張:`SETLOCAL ENABLEDELAYEDEXPANSION`遅延拡張を有効にします。変数が含まれています
`!`の代わりに
`%`同封されています。遅延拡張により、バッチ ファイルの読み取り時だけでなく、実行時に変数を評価できるようになります。
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARIABLE=コンテンツ
ECHO 遅れる前に Expansion: %VARIABLE%
SET VARIABLE=新しいコンテンツ
ECHO 遅延後 Expansion: !VARIABLE!
ENDLOCAL
4.
グローバル環境変数:環境変数内の環境変数への変更。
`SETLOCAL`-scope は、スコープ外のグローバル環境変数には影響しません。
SET GLOBAL=グローバルコンテンツ
SETLOCAL
SET GLOBAL=ローカルコンテンツ
ECHO 地域限定エリア内: %GLOBAL%
ENDLOCAL
ECHO 地元エリア外: %GLOBAL%
5.
変更を元に戻す:ローカライズされた領域での変更を元に戻す場合は、単に前の状態に戻すだけです。
`SETLOCAL`あなたのもとに戻って
`ENDLOCAL`使用。
SETLOCAL
REM ここでの変更点
ENDLOCAL
REM 変更を元に戻す
大事です、
`SETLOCAL`そして
`ENDLOCAL`環境変数が正しく制限され、期待される効果が得られるようにするために、慎重にペアで使用する必要があります。