プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になってます。

Runtime.execを使用してディレクトリ情報を
txtファイルに出力しようとしているのですが、
現在のカレントディレクトリのものは出力できるのですが、
例えば、dドライブのtestフォルダに移動して
出力というのをどうやればいいのかわかりません。
ネットでいろいろ調べてみたものの、どうしてもわかりませんでした。
よろしくお願いします。
下記はカレントディレクトリの情報をそのままtxtファイルに出力したものです。

String command2 = "cmd /c dir > d:\\testest.txt";
Process process = Runtime.getRuntime().exec(command2);

A 回答 (4件)

 #3です。



>例えば、dドライブのtestフォルダに移動して

 すみません。よく読んでなかったです。
 訂正です。

"cmd /K cd /d d:" → "cmd /K cd /d d:\\test"
"dir > testest.txt" → "dir > test.txt"
    • good
    • 1

 こんにちは。



try {
  Process process = Runtime.getRuntime().exec("cmd /K cd /d d:");
  PrintWriter pw = new PrintWriter(process.getOutputStream(), true);
  pw.println("dir > testest.txt");
  pw.println("exit");
  //↑これは余分かも
  pw.close();
}
catch (IOException ex) {
  ex.printStackTrace();
}

 こんなふうにしたら、できました。

 でも、素直に

Runtime.getRuntime().exec("cmd /C dir d:\\ > d:\\testest.txt");

 こっちのほうが早いかも。

この回答への補足

 PrintWriter pw = new PrintWriter(process.getOutputStream(), true);
 pw.println("dir > testest.txt");

このように書くことができるのも勉強になりました。
意味をよく理解したいと思います。

補足日時:2005/05/30 19:00
    • good
    • 0
この回答へのお礼

ありがとうございます!できました!
どちらでもできたのですが、cdで移動して、外部コマンド実行ができるかどうか知りたかったので、本当に良かったです。

回答していただいた皆様ほんとうにありがとうございました。

お礼日時:2005/05/30 19:00

Runtimeクラスのexecで以下の、引数3個のものを使えばよいのではないかと思います。


exec(String command,
String[] envp,
File dir)
3番目が実行ディレクトリになります。
2番目は環境変数ですので、特に指定しない(親プロセスと同じ)
場合はNULLを指定してください。
    • good
    • 0
この回答へのお礼

これが使えるのかなと思いましたが、環境変数はどうすればよいのだろうと思っていました。
nullを指定して試してみたいと思います。ありがとうございました!

お礼日時:2005/05/30 18:48

…ちょっと試してみましたが、無理そうですね…。


もしかしたらできるかもしれませんが…。

Runtime.getRuntime().exec(cmd1); //ディレクトリ移動
Runtime.getRuntime().exec(cmd2); //ディレクトリ情報出力
としても、
cmd1の実行が完了した時点でプロセスが終了してしまうので、cmd2を実行するときはまた新たなプロセスが生成されるからだと思います。

つまり、イメージ的には
・コマンドプロンプトを開いてcmd1を実行してコマンドプロンプトを閉じる
・また新たにコマンドプロンプトを開いてcmd2を実行してコマンドプロンプトを閉じる
という感じでしょうか。

もし、ファイルサイズ、更新日時、ディレクトリかファイルかという情報がいらなくて、単にフィル名を出力したいというのであれば、treeコマンドを使用してはいかがでしょうか?

もしくはちょっと面倒ですが、java.io.Fileクラスを使って情報を出力するとか。
    • good
    • 1
この回答へのお礼

カレントディレクトリを移動して実行というのを
行いと思っています。
java.io.Fileクラスを使って情報の出力も勉強したいと思います。回答ありがとうございました!

お礼日時:2005/05/30 18:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!