2016-11-27 5 views
-1

쉘 명령을 실행해야하는 Java 프로그램을 작성 중이므로 명령을 문자열 (예 : "mkdir ~/Folder1")로 실행하고 해당 명령을 다음과 같이 실행하는 함수를 작성했습니다. 껍질.java 실행 셸 명령

private static void shell(String cmd) 
{ 
    try 
    { 
    Runtime run = Runtime.getRuntime(); 
    Process pr = run.exec(cmd); 
    pr.waitFor(); 
    BufferedReader buf = new BufferedReader(new InputStreamReader(pr.getInputStream())); 
    String line = ""; 

    while ((line = buf.readLine()) != null) { 
    System.err.println(line); // show any errors returned by the command executed on the error console 

    } 

    } catch (Exception ee) {} 

}

이 기능은 어떤 명령을 실행하지 않는 몇 가지 이상한 이유 : 여기에 기능입니다. 내가 잘못 했니? 쉘 명령을 실행하는 것은 간단한 것처럼 보이지만 작동하지 않습니다.

+2

'catch' 블록에서 다음과 같이하십시오 :'ee.printStackTrace();'그리고 오류를 게시하십시오 – rafid059

+1

내가 본 것은 10 평판과 1 개의 금메달 및 1 개의 은메달을 가진 사람입니다 : P – Jay

+0

왜 그런가요? 차이가 있습니까? – brothman

답변

1

나는 당신이 "mkdir C : \ some \ folder \ path"와 같은 mkdir 명령으로 명령 문자열을 전달한다고 생각합니다.

mkdir은 Windows 경로의 일부 바이너리가 아니며 명령 줄 매개 변수입니다. 명령 문자열을 "cmd.exe/c mkdir C : \ some \ folder \ path"로 사용하십시오.

그런 다음 정상적으로 작동합니다.

+0

나는 mac (그래서 유닉스 기반 터미널)을 사용하고 있으며 터미널에서 직접 mkdir 명령을 사용하는 것에 익숙하다. 당신이 제공 한 문자열이 아무 것도 할 것이라고 생각하지 않습니다. 나는 다른 코드를 사용하고 있으며 stil이 작동하지 않는다. (오, 나는 그것을 게시 할 수 없다, 재미있다) – brothman