S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

Windowsコマンドの実行

Runtime.getRuntime().execメソッドWindowsコマンドを実行した時に、

java.io.IOException: CreateProcess: 【execで実行するコマンド】 error=2

という例外が発生した。
この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)