バッチファイル

バッチファイルの遅延環境変数をスコープ外で利用してみた

バッチファイル内で、for文やif文で設定した変数を、for文やif文内で反映されるようにするには、遅延環境変数を利用する必要があるが、その遅延環境変数は、スコープ外で利用することもできる。

今回は、バッチファイル内で設定した遅延環境変数を、スコープ外で利用してみたので、そのサンプルプログラムを共有する。

前提条件

Windowsがインストールされた端末で操作すること。

サンプルプログラムの作成

サンプルプログラムの構成は、以下の通り。
サンプルプログラムの構成

バッチファイルの中身は以下の通りで、遅延環境変数のスコープ内で編集した値(num1)を、スコープ外の変数(num2,num3)に設定していることが確認できる。



「Envader」はLinuxコマンドやDatabase SQL等のスキルを、環境構築不要で習得できる学習サイトだった「Envader」は、ITエンジニアとしてよく使うLinuxコマンドやDatabase SQL等のスキルを、解説を読んだ上で、問題を解き...

サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の通り。

1) コマンドプロンプトを起動し、バッチファイルが存在するディレクトリ(C:\tmp)に移動し、各ファイルの存在を確認する。
サンプルプログラムの実行結果_1

2) バッチファイル(delay_expansion_out.bat)を実行する。実行すると、コマンドプロンプトには以下の値が表示される。
サンプルプログラムの実行結果_2

要点まとめ

  • バッチファイル内で、for文やif文で設定した変数を、for文やif文内で反映されるようにするには、遅延環境変数を利用する必要があるが、その遅延環境変数は、スコープ外で利用することもできる。
  • スコープ外の変数に遅延環境変数を使って編集した値を代入するには、endlocalコマンドでスコープ終了時に、setコマンドでスコープ外の変数に値を代入すればよい。