Windowsコマンドの実行
Runtime.getRuntime().execメソッドでWindowsコマンドを実行した時に、
という例外が発生した。
このException自体は「コマンドを実行するファイルが見つからない」で、IOExceptionということらしい。
下のコードでは、echoコマンドで試したが、copyやdelのコマンドなどもcmdコマンド上で実行しなければならないらしい。
echo、copy、delなどの実行ファイルは存在せず、cmd.exeに包含されてる、ってことか???
【コード】
public class Cmd { public static void main(String[] args) { exec("echo xxx"); exec("cmd /c echo xxx"); } public static void exec(String c) { try { System.out.println("===="); System.out.println(c); Process p = Runtime.getRuntime().exec(c); System.out.println(p.waitFor()); } catch (Exception e) { e.printStackTrace(); } } }
【結果】
echo xxx java.io.IOException: CreateProcess: echo xxx error=2 at java.lang.ProcessImpl.create(Native Method) at java.lang.ProcessImpl.<init>(Unknown Source) at java.lang.ProcessImpl.start(Unknown Source) at java.lang.ProcessBuilder.start(Unknown Source) at java.lang.Runtime.exec(Unknown Source) at java.lang.Runtime.exec(Unknown Source) at java.lang.Runtime.exec(Unknown Source) at Cmd.exec(Cmd.java:10) at Cmd.main(Cmd.java:3) cmd /c echo xxx 0
Javaの道>掲示板(execでDOSコマンド)
Runtime.exec()は難しい | 太郎日記’79J
Java外部プロセス起動メモ(Hishidama's Java Process Memo)