2014-01-08 6 views
1

다음 명령을 사용하려고합니다.NETSH가 출력을 생성하지 않습니다.

Runtime.getRuntime().exec("netsh -c interface dump > c:\\location1.txt"); 

그러나 출력이 나오지 않습니다.

저는 명령과 인수를 구분해야한다는 것을 알고 있지만 시도했지만 실패했습니다.

다음과 같이 사용합니다.

Runtime.getRuntime().exec("netsh",new String[] "-c", "interface", "dump >", "c:\\location1.txt"); 

그러나 여전히 출력이 생성되지 않습니다.

누구든지 런타임을 사용하여 NETSH 명령의 일부 또는 전부를 사용하는 방법을 알고 있다면 큰 도움이 될 것입니다.

답변

1

당신은 ProcessBuilder를

ProcessBuilder pb=new ProcessBuilder(command); 
pb.redirectErrorStream(true); 
Process process=pb.start(); 
BufferedReader inStreamReader = new BufferedReader(
    new InputStreamReader(process.getInputStream())); 

while(inStreamReader.readLine() != null){ 
    //do something with commandline output. 
} 
+0

는 예외가 주 "때 java.io.IOException : 프로그램을 실행할 수 없습니다", "예외 스레드에서"여기 던졌습니다은 netsh -c 인터페이스 덤프> C : \ local.txt " : CreateProcess를 오류 = 2, 파일을 찾을 수 없습니다가 java.lang.ProcessBuilder.start (알 수없는 소스) com.kamani.proxyloader.ExecuteCommand.main에서 \t (ExecuteCommand.java:16) 에서 \t가에 의한 지정 : java.io.IOException : CreateProcess error = 2, 시스템이 지정된 파일을 찾을 수 없습니다. " –

+2

이렇게 되야합니다'new ProcessBuilder ("netsh.exe ","-c ","interface ","dump "); '> C : \ local.txt'를 사용하십시오. – PeterMmm

+1

+1 @ PeterMmm. 그의 제안을 시도하십시오. –

1

이 Windows에서 netsh 인을 사용하여 시도 할 수 있습니다? 실행 파일에 대한 전체 경로를보고 특정보십시오 :

Runtime.getRuntime().exec("C:/full/path/netsh.exe",... 
+0

여전히 작동하지 않습니다. 다른 모든 명령이 작동하지만 위 명령이 작동하지 않는 이유를 모르겠습니다. –

+0

출력을 재 지정할 수 없습니다. 리디렉션'>'은 쉘 명령의 일부입니다. @A Paul이 말한대로'netsh' 출력을 잡거나 명령 줄을 사용하여'cmd.exe'를 시작할 수 있습니다. 여기를보세요 : http://stackoverflow.com/questions/5928225/how-to-make-pipes-work-with-runtime-exec – PeterMmm

+0

예. 당신은 맞지만 여전히 이해할 수 없습니다. 당신이 어떻게 해결할 수 있는지 말해 줄 수 있습니까? 이 문제? –

관련 문제