2009-02-26 7 views
2

特定のディレクトリのすべてのjarファイルを使用してクラスパスを設定する必要があります。次のようにbashはそれをしない:forループで設定すると、バッチスクリプトで変数を保存するにはどうすればよいですか?

CP_DELIMITER=; 
for j in "$MY_HOME/javalib/*.jar"; do 
    if [ "$CP" ]; then 
     CP="$CP$CP_DELIMITER$j" 
    else 
     CP="$j" 
    fi 
done 

をしかし、「forは」DOSで異なる動作をし、基本的にシェルにコマンドを送信しますが、変数

set CP=./ 
for %%j in (%MY_HOME%\javalib\*.jar) do (
    set $CP=%CP%;"%%j" 
) 

の「設定」を保存しません。 forの外側に$CPを入力すると、最後のjarファイルのみが取得されます。内部にエコーすると、%%jにすべての値が含まれていることがわかります。

誰も解決策を見つけましたか?

あなたが CMD.EXE /V遅れた環境変数の展開を有効にして !VAR!を使用する必要があります

答えて

2

set CP=./ 
for %%j in (%MY_HOME%\javalib*.jar) do (set CP=!CP!;"%%j") 
+0

素晴らしい作品と、コマンドラインで/ Vの代わりには、次のとおりです。 SETLOCAL ENABLEDELAYEDEXPANSION –