我想传递字符串"!changeme!" 在命令行上的java程序,如:
java -cp "!AXIS2_CLASS_PATH!" ClientJava --userid admin --passwd "!changeme!"
Run Code Online (Sandbox Code Playgroud)
使用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;
}
Run Code Online (Sandbox Code Playgroud)
我得到以下结果:
"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:
Run Code Online (Sandbox Code Playgroud)
我需要密码才能通过.我尝试了各种各样的逃避,但我还没有找到我需要使用的东西.
任何人都可以提供如何做到这一点的提示吗?
Zach Scrivena提供的解决方案是:
使用插入符号来逃避感叹号.
java -cp "!AXIS2_CLASS_PATH!" ClientJava --xxx "^!changeme^!"
arg: --userid
arg: admin
arg: --passwd
arg: !changeme!
Run Code Online (Sandbox Code Playgroud)
问题是由命令行解释器引起的 - 它用!相应的环境变量替换感叹号中包含的术语.
简单地在每个转义字符之前用插入符号^.这适用于命令行和批处理文件:
java -cp "!AXIS2_CLASS_PATH!" ClientJava --xxx "^!changeme^!"
Run Code Online (Sandbox Code Playgroud)
在命令行中,您还可以将每个转义字符用双引号括起来 "
java -cp "!AXIS2_CLASS_PATH!" ClientJava --xxx ""!"changeme"!""
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3005 次 |
| 最近记录: |