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
    }

inputstreamを取得して実行しようとすると、コードシステムのそのブロックは無限ループに入ります。次に、上記のようにコードを変更しました。ただし、実行すると、終了値1が取得され、システムをシャットダウンできません。

何か案は?

PS: Javaランタイムを使いたくありません。

4

2 に答える 2

1

試す:

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

コンストラクターProcessBuilder(String ...コマンド)のargument(s)コマンドは、それぞれ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 に答える