人形(構成管理)スクリプトでWindows環境変数を扱う際に問題があります。私のスクリプトは、リソースのサイレントインストールや環境設定(環境変数、ファイルなど)に対処しています。環境変数のRAWコンテンツを取得する[展開しない]
私の問題はここにあります。私のスクリプトの1つは、WindowsシステムにJDKをインストールします。つまり、実行可能ファイルをインストールし、JAVA_HOMEとJRE_HOMEを設定し、%JAVA_HOME%/bin
を%PATH%
に含めます。これはsetxコマンドでは簡単に実行できますが、スクリプトの2回目の実行には問題があります。PATH変数は%PATH%;%JAVA_HOME%/bin;%JAVA_HOME%/bin
になります(さらに実行するとvarが長くなります)。
この副作用に対する解決策は...%のPATH%はすでに%のJAVA_HOME/binが含まれていないと、それは変数がデフォルトで展開されない場合にのみ、echo %PATH% | find "%JAVA_HOME/bin"
を通じて行うことができた場合にのみ、コマンドを実行
JAVA_HOMEのバージョンが(C:\Program Files\Java\jdk_6u30
のように)含まれているため、前のコマンドが失敗すると言っています。
環境変数をエコーすることは可能ですか?私はfindコマンドでRAW変数を必要とするだけです。
これは魅力的でした。私はバッチスクリプトを実行し、%エスケープ文字 '^%'でそれを使用しなければなりませんでした。 – Noymn