2012-01-26 10 views
0

人形(構成管理)スクリプトで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変数を必要とするだけです。

答えて

0

あなたは、レジストリからパスを直接読むことができます:

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path 

これは、それが拡大せずに値です取得できるようになります。

+0

これは魅力的でした。私はバッチスクリプトを実行し、%エスケープ文字 '^%'でそれを使用しなければなりませんでした。 – Noymn

関連する問題