2009-06-15 4 views
4

Java 코드를 사용하여 배치 파일을 실행 중입니다. 코드는 다음과 같습니다.Runtime.getRuntime(). exec(), 콘솔 화면 숨기기

Process proc = null; 

proc = Runtime.getRuntime().exec("cmd /c start somebat.bat"); 

이렇게하면 일반 명령 프롬프트 화면이 열립니다. 이제는 명령 프롬프트 창 (검은 색)을 숨기거나 숨기려고합니다. 나는 명령에서 시작 특성을 제거하면 나타나지 않지만 명령에서 제거 할 때 명령이 실행되지 않으며 예외도 표시되지 않는 어딘가에서 발견되었습니다.

이 창을 숨기는 방법을 알려주시겠습니까?

+0

종료 스크립트를 배치 스크립트 끝에 추가하십시오. –

답변

-2

나는 윈도우를 잘 모른다.하지만 "cmd"비트를 생략하면된다. cmd.exe는 Windows 터미널입니다. 그냥 추측. 다른 exec() 메소드를 찾아보십시오. 실행할 수있는 명령을 실행하는 인수와 인수가 있습니다. 유닉스에서 적어도 껍데기가 지원하지 않는 것을 (파일 출력을 파이핑하는 것과 같이) 쉘 기능이기 때문에 호출 된 프로그램이 수행하지 않기 때문에 할 수 없다. 어떤 것은 작동하지 않는 cmd 접두사를 제거하면 찾을 수 있습니다.

는 시도 :

Process proc = Runtime.getRuntime().exec("somebat.bat");

+1

안녕하세요, 주어진 옵션이 작동하지 않습니다. 박쥐 파일은 실행되지 않습니다. –

+0

전체 경로를 지정하려고 시도 했습니까? – gubby

+0

예 시도했지만 배치 파일이 실행되지 않았습니다. –

1

Runtime.getRuntime().exec("cmd /c /Q start somebat.bat"); 
+0

안녕 지터, /Q 옵션이 작동하지 않습니다./Q :-(Q :-)를 추가 할 때 명령이 실행되지 않습니다. –

0

/Q 당신이 창없이 배치 파일을 실행합니다

start /min "title" "c:\path\batchfile.bat" 

를 시도 추가합니다. 그러나 작업 표시 줄에 여전히 나타납니다 (최소화 된 이후).

+0

안녕하세요 Brian, 프롬프트 화면을 완전히 숨길 필요가 있습니다.이 옵션을 사용하면 창을 최소화 할 수 있습니다 .. –

5

"시작"의 B 옵션을 사용해 보셨습니까?

proc = Runtime.getRuntime().exec("cmd /c start /B somebat.bat"); 

편집 :
좋아, 아니시, 그 코드가 실행되지 않는 것이 재미있다.

Process proc = null; 
    try 
    { 
     proc = Runtime.getRuntime().exec("cmd /c start /B D:\\temp\\_test\\somebat.bat"); 
     proc = Runtime.getRuntime().exec("cmd /c call D:\\temp\\_test\\somebat.bat"); 
     proc = Runtime.getRuntime().exec("D:\\temp\\_test\\somebat.bat"); 
    } 
    catch (IOException e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

내 somebat.bat 파일은 다음과 같습니다 : 내 시나리오 작업 위의 시도 블록에서

rem somebat.bat: 
d: 
cd D:\temp\_test 
copy somebat.bat somebat2.bat 

모든 세 가지 버전
내가 단위 테스트를 설정합니다. Somebat.bat는 명령 창을 팝업하지 않고 somebat2.bat에 복사됩니다 (질문에 표시된 전화를 사용하면 어떻게됩니까?).

편집 2 : 다음 라운드 ;-)
아니시, 당신은 당신의 somebat.bat과 개미 파일과 같은 방법을 우리에게 보여줄 수있다?
내 시나리오 작업 아래의 세 가지 통화의 모든 때문에 :

테스트 코드 :

Process proc = null; 
proc = Runtime.getRuntime().exec("cmd /c start /B c:\\temp\\_test\\somebat.bat"); 
proc = Runtime.getRuntime().exec("cmd /c call c:\\temp\\_test\\somebat.bat"); 
proc = Runtime.getRuntime().exec("c:\\temp\\_test\\somebat.bat"); 

somebat.박쥐 :

cd\temp\_test 
ant mycopy 

의 build.xml :

<?xml version="1.0"?> 
<project name="testproj" default="mycopy" basedir="."> 
    <target name="mycopy"> 
     <copy file="myfile.txt" tofile="mycopy.txt" /> 
    </target> 
</project> 

MYFILE.TXT : 임의의 텍스트 파일

+0

안녕하세요 John Nopes/B도 문제를 해결하지 못합니다. 파일이 실행되지 않습니다 –

+0

실제로 배치 파일에서 개미 명령이 실행 중입니다 다음 호출로 실행되는 경우에만 실행됩니다 다른 옵션을 사용하면 결코 실행되지 않습니다 "cmd/c start D : \\ temp \\ _ test \\ somebat.bat " –

+1

ant 명령 만 실행하는 경우 java에서 직접 수행하는 것을 고려할 수도 있습니다. 모든 Ant 작업은 클래스로 액세스 할 수 있으며 적절한 구성으로 실행되고 Ant 자체도 호출 할 수 있습니다 Java 내에서 (예 : http://www.ibm.com/developerworks/websphere/library/techarticles/0502_gawor/0502를 참조하십시오. _gawor.html) –

0

이을 시도해보십시오.

Runtime.getRuntime() 간부 인 (cmd를. exe /KC:/path/batchfile.bat);

2
Process proc = null; 
proc = Runtime.getRuntime().exec("cmd /c start C:\temp\somebat.bat"); 
+0

올바른 형식으로 답해주세요. http://stackoverflow.com/editing-help#syntax-highlighting –

0

당신은 대신 "시작"의 "실행"을 사용할 수 있습니다.

Runtime.getRuntime().exec("cmd /c run somebat.bat");

관련 문제