ファイルからパスを読み取り、環境変数に設定するバッチファイルを作成しています。このバッチ ファイルは、変数を取得するために他の多くのバッチ ファイルによって使用 (呼び出) されます。バッチ ファイルを作成しているときに変数展開の問題に直面したため、以前SETLOCAL ENABLEDELAYEDEXPANSION
はこの問題を克服していました。しかし、そうすると、それを使用している他のバッチ ファイルは変数セットを取得できません。
以下はバッチスクリプトです。
getVariables.bat
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
if EXIST "test.dat" (
for /F "tokens=*" %%I in (test.dat) do set %%I
echo setting JAVA_HOME to :: !JAVA_HOME!
echo setting JAVA to !JAVA!
)
私の別のバッチファイルでは、上記のバッチファイルを使用して変数セットを取得しています
another.bat
call getVariables.dat
echo "%JAVA%"
しかし、エコーは設定されていない "" を出力しています。これが原因である場合setlocal
、どうすればこれを克服できますか? setlocal
また、展開を遅らせて実行時に発生させる必要もあります。この問題を解決するにはどうすればよいですか?