Передача восклицательного знака в программу java в командной строке


2

Я хочу передать строку «! Changeme!» к программе java в командной строке, например:

java -cp "!AXIS2_CLASS_PATH!" ClientJava --userid admin --passwd "!changeme!" 

Использование Windows XP, Java jdk 1.6.0_07.

AXIS2_CLASS_PATH заменяется как обычно, я предполагаю, что время выполнения java. Однако пароль! Changeme! также, похоже, заменяется пустой строкой. Я предполагаю, что эта замена является своего рода функцией JVM.

Используя следующую программу:

static int Run(String[] aArgs) { 
    for (String s: aArgs) { 
     System.out.println("arg: " + s); 
    } 
    return 0; 
} 

Я получаю следующие результаты:

"C:\Program Files\Java\jdk1.6.0_07\bin\java" -cp "!AXIS2_CLASS_PATH!" 
    ClientJava --userid admin --passwd "!changeme!" 
arg: --userid 
arg: admin 
arg: --passwd 
arg: 

мне нужно пароль, чтобы проходить через, как есть. Я пробовал всевозможные побеги, но я не нашел того, что мне нужно использовать.

Может кто подскажет, как это сделать?

Решение, как это предусмотрено Zach Scrivena является:

Используйте каретку, чтобы избежать восклицательный знак.

java -cp "!AXIS2_CLASS_PATH!" ClientJava --xxx "^!changeme^!" 

arg: --userid 
arg: admin 
arg: --passwd 
arg: !changeme! 
+1

В какой среде вы в том, что это замена! Foo! ? Я сильно подозреваю, что этот вопрос не имеет ничего общего с Java, и все, что нужно делать с любой средой оболочки, в которой вы находитесь. 22 фев. 092009-02-22 12:27:45

  0

Использование Windows XP. В Windows нет ничего такого, что делало бы эту замену. Я считаю, что это JVM, но я счастлив, что оказался ошибочным, если есть решение. 22 фев. 092009-02-22 13:05:36

6

Проблема вызвана интерпретатором командной строки --- это заменить термин, заключенный в восклицательных знаков ! с соответствующей переменной среды.

Просто предшествуйте каждому экранированному персонажу кареткой ^. Это работает как для командной строки и пакетных файлов:

java -cp "!AXIS2_CLASS_PATH!" ClientJava --xxx "^!changeme^!" 

В командной строке, вы можете заключить каждый спасся символ в двойных кавычках "

java -cp "!AXIS2_CLASS_PATH!" ClientJava --xxx ""!"changeme"!"" 
  0

--passwd ""! "Changeme"! "" Не работает (= "одна двойная кавычка), но --passwd" ^! Changeme ^! "Приводит к нужной строке. Спасибо. 22 фев. 092009-02-22 13:08:57

  0

Что такое разница между% FOO% и! FOO!? 06 июл. 092009-07-06 08:45:57