2

特定のディレクトリ内のすべての jar を使用してクラスパスを設定する必要があります。Bash は次のように実行します。

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" は保持されません。

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

for の$CP外で for を要求すると、最後の jar ファイルのみが取得されます。%%j内部をエコーすると、すべての値が含まれていることがわかります。

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

4

1 に答える 1

3

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

set CP=./
for %%j in (%MY_HOME%\javalib*.jar) do ( set CP=!CP!;"%%j" )
于 2009-02-26T03:38:36.317 に答える