我正在尝试使用 Java 与使用 psexec 在远程服务器上执行命令的大型批处理文件进行交互。
我可以使用 process builder 启动文件,它适用于大多数命令,但似乎挂断了。
批处理文件中的一个特定命令如下:
ECHO .
Echo Which would you like to reboot?
Echo 1-10. For computers, enter computer number.
Echo E. Exit
set /p userinp=choose a number(0-22):
但从Java我得到:。您要重新启动哪个?1-10。对于计算机,输入计算机编号。E. 退出
然后它挂起
它显然不是在读取 set 行,但更重要的是我还没有弄清楚如何将输入传递回子进程。
String[] command = {"cmd", "/c", "batchfile", "restart"};
ProcessBuilder builder = new ProcessBuilder(command);
builder.directory(new File("C:\\"));
Process process = builder.start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
任何输入将不胜感激。