繁体   English   中英

Java Process Builder命令错误,转义双引号

[英]Java Process Builder Command Error, Escaping double quotes

在CMD中键入以下语句可以正常工作

wmic /node:IP /user:Someuser /password:PWD Process Call Create "cmd /c echo 'Required_Info' %SystemDrive% %SystemRoot%"

我试图通过java进程生成器执行相同的操作。 这是代码。

//some code
String wmic_cmd = "Process Call Create";
String wmic2 = " \"cmd /c echo 'Required_Info' %SystemDrive% %SystemRoot% \"";
cmdTokens.add(wmic_cmd);
cmdTokens.add(wmic2);
/*debug and checked the value of cmdTokens array - it was
[wmic, /node:10.0.0.0, /user:Someuser, /password:PWD, Process Call Create,  "cmd /c echo 'Required_Info' %SystemDrive% %SystemRoot% "] 
*/
ProcessBuilder pb = new ProcessBuilder(cmdTokens.toArray(new String[]{}));
Process proc = pb.start();

当我检查proc的错误流时,我得到以下内容-

Process Call Create - Alias not found.

这表示WMIC的语法错误。 因此,在将命令字符串数组发送给流程生成器时出了点问题。

有任何想法吗??

给定您的命令行以及您要执行的操作,这不是方法。 采用:

final List<String> cmd = Arrays.asList("wmic", "/node:IP", "/user:Someuser",
    "/password:PWD", "Process", "Call", "Create",
    "cmd /c echo 'Required_Info' %SystemDrive% %SystemRoot%"
)

// build processBuilder using cmd.toArray(new String[cmd.size()]) as a command

cmd /c echo etc周围的引号用于防止命令解释器分隔参数。 当您传递原始参数时,无需复制它们,这就是您与ProcessBuilder使用的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM