1. ホーム
  2. batch-file

[解決済み] バッチファイルに変数用の外部ファイルをインクルードする

2023-01-03 02:35:29

質問

バッチファイルを作成し、いくつかの変数 (たとえば設定変数) を含む外部ファイルをインクルードしたいのですが、可能でしょうか。それは可能ですか?

どのように解決するのですか?

注意してください。 ほとんどの人は重要な違いがあることを知らないようで、ただやみくもに黒い背景に灰色のテキストのあるものをDOSと呼ぶので、私はWindowsのバッチファイルを想定しています。とはいえ、最初のバリエーションは DOS でも動作するはずです。

実行可能ファイルの構成

最も簡単な方法は、バッチファイル自体に変数を入れるだけで、それぞれに set ステートメントを使用することです。

set var1=value1
set var2=value2
...

で、メインのバッチに

call config.cmd

もちろん、これによって条件付きで、あるいはシステムの側面によって変数を作成することもできますので、かなり多機能です。しかし、そこで任意のコードを実行することができ、構文エラーがあれば、メインのバッチも終了してしまいます。UNIXの世界では、特にシェルでは、これがかなり一般的なようです。そして、よくよく考えてみると autoexec.bat は他の何ものでもありません。

キー/バリューペア

別の方法として、ある種の var=value のペアを設定ファイルに記述することです。

var1=value1
var2=value2
...

そして、以下のスニペットで読み込むことができます。

for /f "delims=" %%x in (config.txt) do (set "%%x")

これは前と同じようなトリックを利用したもので、単に set をそれぞれの行で使っています。引用符は、次のようなものをエスケープするためにあります。 < , > , & , | . しかし、入力に引用符が使われると、それ自体が壊れてしまいます。また、このような文字で保存された変数のデータをさらに処理する場合は常に注意が必要です。

一般に、バッチ ファイルで頭痛や問題を起こさないように任意の入力を自動的にエスケープすることは、私にはかなり不可能に思われます。少なくとも、私はまだそれを行う方法を見つけられませんでした。もちろん、最初の解決策では、その責任を設定ファイルを書いている人に押し付けています。