gpt4 book ai didi

java getRuntime().exec() 不适用于运行基本的 cmd 命令

转载 作者:行者123 更新时间:2023-12-02 12:52:34 26 4
gpt4 key购买 nike

我正在尝试使用 getRuntime().exec() 运行 cmd 命令。问题是,它仅在我的命令字符串为 ipconfig 时才有效,而如果我尝试运行 java -version时间,然后抛出错误:

java.io.IOException:无法运行程序“time”:CreateProcess error=2,系统找不到指定的文件

   String command = "time";
Process p;
try {
p = Runtime.getRuntime().exec(command);
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line == null) { break; }
//System.out.println(line);
textField_1.setText(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

最佳答案

我通过使用ProcessBuilder解决了这个问题。我仍然不知道为什么早期的代码不适用于所有命令。但通过使用 ProcessBuilder,我能够执行任何 cmd 查询。

引用代码如下:

String command_ping = "ping " + host_name;

try {

ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", command_ping);
builder.redirectErrorStream(true);
Process p = builder.start();

BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
StringBuffer buffer = new StringBuffer();
String line = "";
while (true)
{

buffer.append(line).append("\n");
line = r.readLine();
if (line == null) { break; }
}
message_ping= buffer.toString();
p.waitFor();
r.close();

}

catch (IOException e)
{
e.printStackTrace();
}

catch (InterruptedException e)
{
e.printStackTrace();
}

关于java getRuntime().exec() 不适用于运行基本的 cmd 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44560542/

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