2017-11-26 9 views
-1

私がしたいことは、アプリケーションが起動するときに新しいcmdを開いてから別のコマンドを別の瞬間に書き込むことです。 例:私は自分のアプリケーションを起動し、見えないように隠された新しいcmdを実行し、 "cd .."と書いて、アプリケーションを10秒待ってから "cd"を書きます。 "もう一度" dir "と書いて、" dir "コマンドの結果を表示します。 私はどのように私は、Javaで隠しcmdを開き、それにコマンドを書くことができますか?

public static void main(String[] args) throws IOException{ 
    Runtime rt = Runtime.getRuntime(); 
    Process process = rt.exec("cmd /c cd .. "); 
    process = rt.exec("cmd /c cd .. "); 

    process = rt.exec("cmd /c dir"); 
    BufferedReader commReader = new BufferedReader(new InputStreamReader(process.getInputStream())); 
    String line = ""; 

    while((line = commReader.readLine()) != null){ 

     System.out.println(line); 
    } 

} 

ことを行うには、このコードを使用するようにしようと試みましたが、私は、それは別のCMDS上でコマンドを実行しますので、それは動作しません見てきたよう。 私の恐ろしい英語を申し訳なく思って、誰かがそれを解決する方法を知っていますか?

答えて

0

process変数を上書きしていますので、もちろんcmdの複数のインスタンスを実行します。

あなたがする必要があるのは、1つのプロセスを開き、そのサブプロセスの通常の入力に接続されているOutputStreamにコマンドを書き込むことです。

public static void main(String[] args) throws IOException { 
     ProcessBuilder builder = new ProcessBuilder("cmd"); 
     Process process = builder.start(); 

     OutputStream stdin = process.getOutputStream(); 
     BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin)); 

     writer.write("cd ..\n"); 
     writer.write("dir\n"); 
     writer.flush(); 
     writer.close(); 

     BufferedReader commReader = new BufferedReader(new InputStreamReader(process.getInputStream())); 
     String line = ""; 

     while((line = commReader.readLine()) != null){ 

      System.out.println(line); 
     } 
    } 
関連する問題