somePath\\psexecO-6ren">
gpt4 book ai didi

java - 如何使用JAVA执行psexec的cmd行并在一行中登录到文本文件?

转载 作者:行者123 更新时间:2023-12-02 04:37:35 25 4
gpt4 key购买 nike

我正在尝试在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();

}

该行已执行并且计算正在启动,但日志部分不起作用。未创建日志文件 psexecOut.txt

当我在 cmd 中正常运行命令(没有转义字符)时,它运行良好并且创建了日志文件,但使用 java 它不会创建日志文件。

我怀疑 > 需要转义,但正如我所读,它已经按原样转义了。

如何使用 java 在单个 cmd 行中执行 psexec 并将日志记录到文本文件,就像我可以在 Windows 控制台中手动执行的那样?

最佳答案

已解决:
正如评论中所建议的:cmd.exe/c 有效。

所以更正的方法是:

private static String executeCommand(String command) {

StringBuffer output = new StringBuffer();
System.out.println("command is = \n"+command);
Process p;
try {
p = Runtime.getRuntime().exec("cmd.exe /c "+command); // <-correction done here
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();

}

关于java - 如何使用JAVA执行psexec的cmd行并在一行中登录到文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46360801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com