2016-09-23 5 views
0

java 명령을 사용하여 배치 파일을 실행하려고합니다. 내가 코드를 다음 한Java에서 args로 배치 파일 실행

Runtime.getRuntime().exec("cmd /c start C:\\temp\\Sept_2016\\22Sept\\filecompare.bat"); 

내가

fc "C:\temp\Sept_2016\22Sept\MSP_Files\msp.txt" "C:\temp\Sept_2016\22Sept\MIB_Files\mib.txt">>"C:\temp\Sept_2016\22Sept\mismatch.txt" 

이 따라 작동 아래와 같이 filecompare.bat라는 이름의 배치 파일이 예상 출력이 txt 파일에 저장됩니다.

위와 같이 하드 코딩 된 값을 사용하고 싶지 않습니다. 자바 프로그램에서 값을 가져오고 싶습니다. 그래서

fc %4 %5>>%6 

나는이 배치 파일을 수정하고 비슷한 라인에

String file1 = new String("C:\\temp\\Sept_2016\\22Sept\\MSP_Files\\msp.txt"); 
String file2 = new String("C:\\temp\\Sept_2016\\22Sept\\MIB_Files\\mib.txt"); 
String file3 = new String("C:\\temp\\Sept_2016\\22Sept\\mismatch.txt"); 
Runtime.getRuntime().exec(new String[]{"cmd.exe", "/c", "start C:\\temp\\Sept_2016\\22Sept\\filecompare.bat", file1, file2, file3}); 

아래와 같은 자바 코드를 쓰고 있어요하지만이 작동하지 않는 것 같습니다. 그것은 단지 dos 창을 여는 것입니다.

도와 주시겠습니까? 미리 감사드립니다.

+2

'% 4','% 5' 및'% 6'을 사용하는 이유는 세 가지 매개 변수 만 전달 했습니까? 제가 1) "cmd.exe를"아래로 5 개 파라미터를 전달하고 – talex

+0

, 2) "/ C" 3) "C 시작 \\ TEMP \\ Sept_2016 \\ 22Sept \\ filecompare.bat을"4 ) file1, 5) file2, 6) file3 – Sachin

+0

String []의 처음 세 요소를 연결해야합니다. 그런데 왜 모든 문자열을 연결하고 단일 문자열을 전달할 수 없습니까? – freefall

답변

1

fc %4 %5>>%6fc %1 %2>>%3으로 바꿉니다.

filecompare.bat은 매개 변수가 아닌 cmd으로 전달되는 자체 매개 변수만을 인식합니다.

+0

헤이 탈 레스, 고마워. 고마워. 지금 일하고있다. 지금 볼 수있는 유일한 문제는 2 개의 명령 프롬프트를 여는 것입니다. 그것에 대한 어떤 생각? – Sachin

+0

제안 된대로 매개 변수에서'start'을 제거하십시오. – talex

+0

시작을 제거한 다음 단일 명령 프롬프트를 열었지만 명령을 처리하지 않고 단일 명령 프롬프트 – Sachin