次のコードは、ワイルドカード処理により、現在のディレクトリ内の各ファイルの属性を出力します。
c:\work>attrib *
スクリプトでワイルドカード処理を無効にする必要があります。エスケープ記号は機能しません:
c:\work>attrib "*"
c:\work>attrib ^*
どちらもあなたに同じものを与えます。
ワイルドカードを引数として受け入れるアプリケーションを起動するには、ワイルドカード処理を無効にする必要があります。
A.java
import java.util.Arrays;
public class A {
public static void main(String[] args) {
System.out.println(Arrays.deepToString(args));
}
}
CMD
C:\work\temp>start.bat
C:\work\temp>java -cp playground.jar A *
[activation.jar, file.txt, playground.jar, playground.jar.bak, start.bat, test.bat]
C:\work\temp>start.bat
C:\work\temp>java -cp playground.jar A "*"
[activation.jar, file.txt, playground.jar, playground.jar.bak, start.bat, test.bat]
C:\work\temp>start.bat
C:\work\temp>java -cp playground.jar A "* foo? *bar*"
[* foo? *bar*]
回避策が見つかりました。「*;」- 間違ったフォルダ名ではなく、有効なクラスパス:
java -cp "*;" A
ありがとう。