WindowsでCMDを使って直接コマンドを実行しようとしています(Linuxのターミナル)。私は次のコードを持っています。それは非常に奇妙なことです。まず、実行時にプログラムは何も印刷しません。次に、デバッグしてステップスルーすると、プログラムはデフォルトのCMDテキストと入力行を出力します。最後に、コマンドを実行するようにCMDに書き込むことはできません。ここに私のコードです。私はそれがスレッドの問題かもしれないと思っていますが、私はランタイムに精通していません。CMDをプロセスとして使用する
Runtime r = Runtime.getRuntime();
try {
Process p = r.exec("cmd");
InputStream iStream = p.getInputStream();
BufferedReader sReader = new BufferedReader(new InputStreamReader(iStream));
while(sReader.ready()) {
System.out.print((char)sReader.read());
}
OutputStream oStream = p.getOutputStream();
BufferedWriter sWriter = new BufferedWriter(new OutputStreamWriter(oStream));
sWriter.write("mkdir test");
sWriter.newLine();
while(sReader.ready()) {
System.out.print((char)sReader.read());
}
} catch(Exception e) {
e.printStackTrace();
}
そして、私の出力デバッグおよびを通じて段階、
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
D:\workspaces\Maven\Command Line>
各コマンドを直接実行するのではなく、 'cmd'を使用する理由はありますか? – unholysampler
@unholysampler:これがWindows上で実行されることを意図している場合は、このようにする必要があります(または 'cmd/c mkdir test'を1行で実行する必要があります)。 'mkdir'はWindowsコマンドプロセッサーに組み込まれています。別の実行可能ファイルではありません。もちろん、標準のライブラリの代わりに 'cmd'を使って' mkdir'コマンドを実行する必要があるのはなぜですか?(http://download.oracle.com/javase/6/docs/api/java/io/File.html #mkdir())は私の外にあります。 – ig0774
私はmkdirを使用していません、私は単純な例のために使用しました。実際のCMDコマンドは動的な値で長くて醜いです。 – Spidy