0
 ProcessBuilder pb;
 Process process;
 String command ="shutdown -s";
    try {
        pb = new ProcessBuilder("cmd.exe", "/C", command) 
        process = pb.start();
        process.waitFor();
        if (process.exitValue() == 0) {                  
            //success
        } else {
            //handle error
        }
    } catch (Exception e) {
        //handle error
    }

当我尝试获取输入流并运行该代码块时,系统会进入无限循环。然后我如上所示更改了代码。但是,当我运行它时,它的退出值为 1 并且无法关闭系统。

有任何想法吗?

PS:我不想使用 java 运行时。

4

2 回答 2

1

尝试:

pb = new ProcessBuilder("cmd.exe", "/C", "shutown", "-s");

构造函数 ProcessBuilder(String... command) 的参数命令每个都作为 1 个参数传递给可执行文件,这允许在参数中有空格。

您执行命令的方式相当于

cmd /C "shutdown -s"

因此“shutdown -s”被解释为单个参数。

于 2012-07-26T22:23:21.740 回答
0

命令应该是:

String command ="shutdown.exe -s";

代替:

String command ="shutdown -s";
于 2012-07-27T06:23:48.613 回答