我正在尝试在Java中执行以下行(带有转义字符):
"psexec -i -d \\\\computerName -u user -p pass calc 2>
somePath\\psexecOut.txt"
我使用以下方法执行 cmd 命令行:
private static String executeCommand(String command) {
StringBuffer output = new StringBuffer();
System.out.println("command is = \n"+command);
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader =
new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine())!= null) {
output.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return output.toString();
}
执行命令行时,calc已经启动,但日志部分不起作用。日志文件
psexecOut.txt
未被创建。在cmd中正常运行命令(没有转义字符)时,它可以正常运行并创建日志文件,但是在Java中使用它时,它不会创建日志文件。
我怀疑
>
需要被转义,但据我所知,它已经被转义了。如何使用Java在单个命令行中执行带有文本文件日志的psexec,就像在Windows控制台中手动执行一样?
cmd.exe /C
了吗?正是 cmd.exe 解释了>
重定向。 - lit