#navi(../)
* setlocalとendlocalの動作説明 [#ne261a47]
バッチファイルで使用される、setlocalやendlocalの説明を以下に記します。

#contents
#htmlinsertpcsp(win-top.html,win-sp.html)

* setlocal, endlocal なし [#x49fb869]
以下のバッチファイルを作成し、コマンドプロンプトから起動します。
#ref(nonlocal.bat)
 @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のみ設定 [#uffc13f4]
以下のようなバッチファイルを作成し実行してみます。
#ref(setlocal.bat)
 @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 [#b59ebfd8]
以下のようなバッチファイルを作成し実行してみます。
#ref(setendlocal.bat)
 @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 の使用例 [#f15ff5fb]
以下のように呼び出し元 callbat.bat と呼び出し先の arg.bat を用意しました。
#ref(callbat.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%

#ref(arg.bat)
 @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の使用方法でした。

#htmlinsertpcsp(win-btm.html,win-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS