2014-11-05 3 views
0

자바에서 cmd.exe 명령을 실행하고 싶습니다 (예 : md C : \ blabla를 사용하여 새 디렉토리 C : \ blabla를 만듭니다) 내 코드는 다음과 같이 실행되며 실행됩니다.아파치와 간단한 cmd.exe 명령 실행 exec

import java.io.IOException; 
import org.apache.commons.exec.CommandLine; 
import org.apache.commons.exec.DefaultExecutor; 
import org.apache.commons.exec.ExecuteException; 

public class Test { 

    public static void main(String[] args) throws ExecuteException, IOException { 
     CommandLine cmdLine = new CommandLine("cmd.exe"); 
     cmdLine.addArgument("md"); 
     cmdLine.addArgument("C:\\blabla"); 
     DefaultExecutor executor = new DefaultExecutor(); 
     executor.execute(cmdLine); 
    } 
} 

하지만 C에 가면 : 잘 작동 \ blabla cmd.exe를에 : \ 수동 MD의 C를 입력하기 때문에 내가 기대하는 것처럼 아무 폴더 blabla이없는 오류없이. 나는 또한 "cmd.exe"대신 "C : \ Windows \ System32 \ cmd.exe"를 시도했지만 사용하지는 않습니다.

은 콘솔의 출력은 다음과 같습니다

마이크로 소프트 윈도우 [버전 6.1.7601] 저작권 (C) 2009에서 Microsoft Corporation합니다. 판권 소유.

C : Selphiron \ 작업 공간 \ 테스트>

\ \ 사용자 실수는 어디에 있습니까?

답변

1

실수는 명령 자체입니다. 명령 줄에서 한 일을 시도해보십시오.

코드는 "cmd.exe md c : \ blabla"와 같은 것을 시스템에 전달합니다. 새로운 쉘이 시작됩니다. cmd.exe에 쉘 명령을 전달하면 트릭을 수행하지 않습니다.

cmd /c md c:\blabla 

/c 여기에 모든 차이를 만들어 사용해보십시오.

+0

답장을위한 Thx. 그것은 작동하지만 cmd.exe를 열고 md C : \ blabla를 입력하면 새 디렉토리가 만들어집니다 (Windows 7 64 비트). 어쨌든 고맙습니다 :) – Selphiron

+0

"cmd.exe"를 매개 변수로 사용한다고해서 cmd가 그것을 가져 와서 실행한다는 의미는 아닙니다. ''cmd.exe /? ''를 검사하여 매개 변수의 기능을 확인하십시오. – f1sh