Batch-script-local-variables-functions

提供:Dev Guides
移動先:案内検索

バッチスクリプト-関数のローカル変数

関数内のローカル変数を使用して、名前の競合を回避し、変数の変更を関数に対してローカルに保つことができます。 最初にSETLOCALコマンドを使用して、コマンドプロセッサがすべての環境変数のバックアップを取るようにします。 ENDLOCALコマンドを呼び出すことにより、変数を復元できます。 間に行われた変更は、現在のバッチスクリプトに対してローカルです。 ENDLOCALは、バッチファイルの最後に到達すると自動的に呼び出されます。 GOTO:EOFを呼び出します。

SETLOCALを使用して変数をローカライズすると、関数の外部で使用される変数との名前の競合を心配することなく、関数内で変数名を自由に使用できます。

次の例は、関数でローカル変数を使用する方法を示しています。

@echo off
set str = Outer
echo %str%
CALL :SetValue str
echo %str%
EXIT/B %ERRORLEVEL%
:SetValue
SETLOCAL
set str = Inner
set "%~1 = %str%"
ENDLOCAL
EXIT/B 0

出力

上記のプログラムでは、変数「str」は関数SetValueでローカライズされています。 したがって、str値がメイン関数に返されても、メイン関数のstrの値は、関数から返される値に置き換えられません。

上記のコマンドは、次の出力を生成します。

Outer
Outer