ファイルからパスを読み込んで環境変数に設定するバッチファイルを作成しています。このバッチファイルは、変数を取得するために他の多くのバッチファイルによって使用されます(呼び出されます)。私が問題に直面したバッチファイルを書いている間、私はSETLOCAL ENABLEDELAYEDEXPANSION
を使ってこの問題を克服しました。しかし、それを使用している他のバッチファイルは、変数セットを取得することができません。以下は バッチスクリプトは、他のバッチファイルによってアクセスされるsetlocal変数を作成します。
another.bat
call getVariables.dat
echo "%JAVA%"
設定を取得するには、上記batachファイルを使用しています、私の別のバッチファイルで
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!
)
バッチスクリプトである。しかし、エコーは、それをどこに「」印刷されます設定されていません。これがsetlocal
の場合、どうすればこの問題を解決できますか?また、展開を遅らせ、実行時に発生させるためにsetlocal
が必要です。この問題の解決策はありますか?私を助けてください。
それは私の問題でした。私はすべてのスクリプトでSETLOCALを使用する習慣があります。最後に、問題の原因となった1つの例外が見つかりました。 – djangofan