我想把绳子给我“!变!”命令行中的java程序,如下所示:
java -cp "!AXIS2_CLASS_PATH!" ClientJava --userid admin --passwd "!changeme!"
使用Windows,Java 1.6.0_07。
我假设AXIS2_CLASS_PATH被替换为正常的java运行时。然而,密码的!变化!似乎也被空字符串取代了。我假设这种替换是某种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:
我需要密码按原样通过。我试过各种各样的逃避,但我没有找到我需要使用的东西。
有人能提供一个如何做这件事的提示吗?
解决方案由 提供:
使用插入符号转义感叹号。
java -cp "!AXIS2_CLASS_PATH!" ClientJava --xxx "^!changeme^!"
arg: --userid
arg: admin
arg: --passwd
arg: !changeme!
发布于 2009-02-22 05:06:47
这个问题是由命令行解释器引起的--它用相应的环境变量替换了感叹号!
中的术语。
只需在每个转义字符之前使用插入符号^
。这适用于命令行和批处理文件:
java -cp "!AXIS2_CLASS_PATH!" ClientJava --xxx "^!changeme^!"
在命令行上,还可以将每个转义字符以双引号"
括起来。
java -cp "!AXIS2_CLASS_PATH!" ClientJava --xxx ""!"changeme"!""
https://stackoverflow.com/questions/574835
复制