gpt4 book ai didi

java - 使用java在cmd中执行 "time"命令

转载 作者:行者123 更新时间:2023-12-01 09:18:39 24 4
gpt4 key购买 nike

我需要使用 java 在命令提示符中执行“time”命令。它的问题是,显示时间后,它要求设置新时间。我可以正常执行“dir”或“cd”或“ver”等命令。但是那些要求用户输入的命令(例如“日期”或“时间”)无法完全执行。这是代码:

try {
Process p = Runtime.getRuntime().exec("cmd /c time");
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
} catch (IOException e1) {} catch (InterruptedException e2) {}

我怀疑由于cmd正在请求输入,因此InputStream无法读取它,因为它认为流尚未结束,因此程序永远不会停止执行。所以,我正在寻找一种方法,当它要求我输入新时间时,然后打印它的输出(如果有)。

最佳答案

如果您唯一关心的是第一个输出,那么您不应该等待进程退出(p.waitFor()),而是继续获取​​输入流并读取该行,例如代码如下。

try {
String [] commands = {"cmd.exe","/C","time"};
Process p = Runtime.getRuntime().exec(commands);
OutputStream out = p.getOutputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = reader.readLine(); // read the first line
System.out.println(line);

// write to ouput
out.write("sample".getBytes());
out.flush();
line = reader.readLine();
System.out.println(line);
line = reader.readLine();
System.out.println(line);
p.destroy();
} catch (IOException e1) {}

关于java - 使用java在cmd中执行 "time"命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40326821/

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