1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

setlocal内で設定した変数を外部に渡す

Posted at

やりたい事

バッチファイルを触ってて、setlocal内でセットされてる値を外に渡したくなった。

setlocalの役割

バッチファイルでは、setlocalendlocalに挟まれた範囲で、環境変数のローカル化が行えます。
これは通常、この範囲外には影響を与えません(外からは見えません)

localvar.bat
@echo off

setlocal
set var=外から見えない
echo 内側:%var%
endlocal

echo 外側:%var%

goto :EOF
実行結果
内側:外から見えない
外側:

外から値を使う

しかし、外側からその値が欲しい場合があります。

そこで、&&(論理積)を使います。

externalvar.bat
@echo off

setlocal
set var=外から見える
echo 内側:%var%
rem endlocalとsetを&&で繋ぐ
endlocal && set var=%var%

echo 外側:%var%

goto :EOF
実行結果
内側:外から見える
外側:外から見える

これでendlocalの後でも、内側で設定した値を使えるようになりました。

別バッチから使う

上記のやり方はsetlocalの外側でsetしているため、externalvar.batを実行後、別バッチファイルからもこの値を参照することも可能になります(実行中のプロンプトを閉じない場合)

other.bat
@echo off

echo 別バッチ:%var%

rem 未クリアだと、localvar.bat再実行時にも見える
set var=

goto :EOF
実行結果
別バッチ:外から見える

参考記事

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?