2013-08-09 3 views
1

여기 내 질문은 windows bat dos 창을 직접 닫고 닫기 작업이 호출 될 때 일부 작업이나 다른 박쥐가 호출되어야합니다. 어떻게 구현할 수 있습니까?windows bat을 닫고 몇 가지 작업을 수행합니다.

내가하는 일은 다음과 같습니다. 나는 박쥐를 시작하고 배트는 두 개의 프로세스를 시작합니다. 도스 박쥐가 닫히면 두 프로세스도 닫아야합니다. 사용자는 종종 dos 창을 직접 닫습니다. 제공 한 stop.bat를 사용하지 마십시오. 그래서 사용자의 닫는 동작을 잡아서 뭔가를 할 수 있다고 생각합니다 !!

감사합니다 !!!!

+0

: {http://stackoverflow.com/questions/9277630/windows-shutdown-hook-on-java-application-run-from-a-bat -script}하지만 자바 네이티브를 사용하면 복잡해집니다. 간단한 해결책이 있습니까? – Winston

+1

순수 배치 스크립트를 사용하여이 작업을 수행하는 것은 불가능하다고 생각하지만 다른 언어를 사용하여 가능할 수도 있습니다. –

답변

1

글쎄,이 문제를 해결했습니다. 주요 아이디어는 [Windows shutdown hook on java application run from a bat script]입니다.하지만 Bat 또는 Cmd를 강제 종료하면 버그가 발생합니다. 동작이 호출되지 않을 수 있습니다. 이유는 여기에서 Java 코드 작업이 호출되기 전에 JVM 종료입니다. 그래서 나는 네이티브 메소드에 액션을 넣었다.

0

나는 최근에 이렇게했습니다. 기본적으로 내가 작동하도록 관리하는 방식은 주 배치 파일을 시작할 때 다른 배치 파일 (우리는 bat2라고 부름)을 시작한다는 것입니다 (우리는 이것을 bat1이라고 부름).

:start 
tasklist /v | Find "BAT1'S WINDOW NAME GOES HERE" 
if "%ERRORLEVEL%"=="1" COMMAND TO EXECUTE WHEN THE WINDOW IS CLOSED 
if "%ERRORLEVEL%"=="1" exit 
timeout /t 1 /NOBREAK >nul 
goto :start 

그건 내가 bat2에 사용했던 스크립트입니다. 그것은 아마 좋지는 않을 지 모르지만 나는이 재료에 아주 익숙해 그래서 내가 생각할 수있는 최선이다.

희망이 도움이됩니다.

0

AstralBacon의 이전 항목에 대한 메모. 당신은 너무처럼 단순화 할 수 있습니다 : 어쩌면이 솔루션은 작동

:start 
tasklist /v | Find "BAT1'S WINDOW NAME GOES HERE" 
if "%ERRORLEVEL%"=="1" (
    COMMAND TO EXECUTE WHEN THE WINDOW IS CLOSED 
    exit 
) 
timeout /t 1 /NOBREAK >nul 
goto :start 
관련 문제