【发布时间】:2016-10-03 05:03:18
【问题描述】:
我需要将带有空格的参数传递给包含在批处理文件中的命令。我需要从我的 java 代码中触发相同的操作。
我试图用双引号传递参数,但它仍然采用引号内带有空格的值,因此无法执行命令。 包含在批处理文件中的命令是 - msend -n {server} -a {event} -b "mc_object_class=%par1%;mc_parameter=%par2%;support_group=%par3%"
我用来触发相同的java方法是- 处理过程 = new ProcessBuilder("C:/test.bat", "\""+object_class+"\"", "\""+mc_parameter+"\"", "\""+support_grp+"\"" ).start();
带引号和不带引号的参数在 java 中被视为相同,而在命令提示符下它可以正常使用双引号。需要知道 ProcessBuilder 方法中带空格的参数传递方式。
Runtime.getRuntime().exec() 方法也给出同样的错误。我的工作卡在这一点上。
我们将不胜感激。
【问题讨论】:
-
打开命令提示符窗口并运行
call /?。在输出帮助中,您可以阅读如何引用从批处理文件中调用批处理文件时使用的参数(参数)。%par1%、%par2%和%par3%肯定是错误的,正确的是%~1、%~2和%~3。
标签: batch-file whitespace