このエントリーをはてなブックマークに追加


setlocalとendlocalの動作説明

バッチファイルで使用される、setlocalやendlocalの説明を以下に記します。


setlocal, endlocal なし

以下のバッチファイルを作成し、コマンドプロンプトから起動します。

@echo off
set A=sakura
set B=tsubaki
set C=suzuran

上記のバッチファイルを起動してみます。
起動後、変数A,B,Cがどうようになっているか確認します。

C:\sakura>echo %A% %B% %C%
%A% %B% %C%

C:\sakura>nonlocal.bat

C:\sakura>echo %A% %B% %C%
sakura tsubaki suzuran

上記の通り、バッチファイルを起動した後も、変数にセットした値が有効になっています。

setlocalのみ設定

以下のようなバッチファイルを作成し実行してみます。

@echo off
setlocal
set A=sakura
set B=tsubaki
set C=suzuran
echo %A% %B% %C%

上記のバッチファイルを起動してみます。
起動後、変数A,B,Cがどうようになっているか確認します。

C:\sakura>setlocal.bat
sakura tsubaki suzuran

C:\sakura>echo %A% %B% %C%
%A% %B% %C%

バッチファイル内のみ変数が有効であるのが確認できます。
今回は、endlocalを最後に記述しませんでしたが、バッチファイルを作成するにあたっては、記入したほうがよいでしょう。

setlocal & endlocal

以下のようなバッチファイルを作成し実行してみます。

@echo off
setlocal
set A=sakura
set B=tsubaki
set C=suzuran
echo %A% %B% %C%
endlocal
set D=tanpopo

上記のバッチファイルを起動してみます。
起動後、変数A,B,Cがどうようになっているか確認します。

C:\sakura>setendlocal.bat
sakura tsubaki suzuran
C:\sakura>echo %A% %B% %C% %D%
%A% %B% %C% tanpopo

setlocal & endlocal の使用例

以下のように呼び出し元 callbat.bat と呼び出し先の arg.bat を用意しました。

@echo off
setlocal
set A=sakura
set B=tsubaki
set C=suzuran
call arg.bat %A% %B% %C%
endlocal
call arg.bat %A% %B% %C%
@echo off
echo Running arg.bat
echo %A% %B% %C%

callbat.batからarg.batが2度呼びだされます。
1つ名はsetlocalとendlocalのスコープ内、もう一つは最後のendlocal後になります。
実際に実行してみます。

C:\sakura>callbat.bat
Running arg.bat
sakura tsubaki suzuran
Running arg.bat
ECHO は <OFF> です。

1回目のarg.batの呼び出しは設定した変数が表示されます。
2回目は変数が空なので、echoのみが呼び出され、ECHO は <OFF> です。と表示されているのがわかります。
つまり、setlocal, endlocalを指定すればその間で有効な変数として使用できることが可能です。

以上、setlocal, endlocalの使用方法でした。



添付ファイル: filecallbat.bat 461件 [詳細] filesetendlocal.bat 515件 [詳細] filenonlocal.bat 594件 [詳細] filearg.bat 460件 [詳細] filesetlocal.bat 489件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-10-27 (火) 19:48:26