ホームページ > Java > &#&チュートリアル > Java を使用して複数のコマンド プロンプト コマンドを確実に実行するにはどうすればよいですか?

Java を使用して複数のコマンド プロンプト コマンドを確実に実行するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-28 06:01:18
オリジナル
500 人が閲覧しました

How Can I Reliably Execute Multiple Command Prompt Commands Using Java?

Java を使用してコマンド プロンプト コマンドを実行する

次のコードを使用して、Java を介してコマンド プロンプトからコマンドを実行しようとします:

String command = "cmd /c start cmd.exe";
Process child = Runtime.getRuntime().exec(command);
OutputStream out = child.getOutputStream();
out.write("cd C:/ /r/n".getBytes());
out.flush();
out.write("dir /r/n".getBytes());
out.close();
ログイン後にコピー

指定されたコマンドを実行せずにコマンド プロンプトを開いたままにしてしまうと、望ましい結果が得られない可能性があります

これに対処するには、次のアプローチを検討してください。

String[] command = {"cmd"};
Process p = Runtime.getRuntime().exec(command);
new Thread(new SyncPipe(p.getErrorStream(), System.err)).start();
new Thread(new SyncPipe(p.getInputStream(), System.out)).start();
PrintWriter stdin = new PrintWriter(p.getOutputStream());
stdin.println("dir c:\ /A /Q");
stdin.close();
int returnCode = p.waitFor();
System.out.println("Return code = " + returnCode);
ログイン後にコピー

さらに、データ転送を容易にするために SyncPipe クラスを定義します。

class SyncPipe implements Runnable {
  public SyncPipe(InputStream istrm, OutputStream ostrm) {
    istrm_ = istrm;
    ostrm_ = ostrm;
  }

  public void run() {
    try {
      final byte[] buffer = new byte[1024];
      for (int length = 0; (length = istrm_.read(buffer)) != -1; ) {
        ostrm_.write(buffer, 0, length);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  private final OutputStream ostrm_;
  private final InputStream istrm_;
}
ログイン後にコピー

このメソッドは、複数のコマンドを文字列にして単一の Windows プロセス内で実行する機能。さらに、リアルタイムのフィードバックとエラー処理メカニズムを提供します。

以上がJava を使用して複数のコマンド プロンプト コマンドを確実に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート