2012-04-03 1 views
1

Time Machine ("연속 백업"소프트웨어)과 유사한 백업 알고리즘을 개발 중입니다. batchfile (명령 프롬프트)을 통해 성공했습니다. 거의 매 3 분마다 "1 분마다"실행됩니다. 배치 파일은 명령 프롬프트 창에서 실행 중입니다. 코드가 이미 정상적으로 작동하면 숨길 수 있습니다.내 배치 파일에서 응용 프로그램이 비정상적으로 종료되는 것을 방지하는 방법

유일한 문제는 종료 할 때 배치 파일이 "둥근"상태가 될 때까지 기다려야한다는 것입니다. 내가 shutdown 버튼을 클릭하기 전에 (또는 그 밖의 다른 시간에 shutdown을 누르면 모든 것이 망쳐 버릴 것입니다 - dos 명령은 아무 것도하지 않고 종료 될 것이므로 알고리즘이 망가졌습니다). 나는 그것을 자동으로하고 싶습니다. 즉, 종료 버튼을 클릭 할 수 있습니다. 그런 다음 배치 파일은 "라운드"가 끝날 때까지 기다려야합니다. dos 명령은 종료되지 않아야합니다. 닥쳐.

내가 사용하는 DOS 프로그램은 비정상적으로 종료됩니다. ln (웹에서 발견 - 파일을 하드 링크하는 데 사용됨), 복사, 이동 (루프, dir 명령 등이 손상됨)

배치 파일에서 이러한 응용 프로그램의 비정상적인 종료를 방지하려면 어떻게합니까? (그리고 내가 실행하는 다른 응용 프로그램)

나는 다른 사용자로 실행하려고했지만 똑같은 응용 프로그램이 종료되면 종료됩니다. VB에서 "종료 방지"코드를 사용하는 동안 Visual Basic에서 명령을 실행하는 것으로 생각했지만 VB 응용 프로그램 만 종료되지 않았습니다. VB 응용 프로그램 내에서 실행 된 배치 파일과 실행되는 응용 프로그램이 동일하게 종료되었습니다.

도움말

ccxzy

+0

나는 리눅스에서 kill, ctrl + C, ...를 트랩하는 방법이 있다는 것을 알고있다. 그래서 스크립트는 그것에 반응하지 않고 트랩이 활성화 될 때 활성화되는 프로그램을 작성할 수있다. 어쩌면 볼만한 가치가 있을까요? – GroundZero

+0

"종료 방지"VB 코드는 실제로 무엇을합니까? 종료 프로세스를 취소하거나 단순히 VB 응용 프로그램이 종료되는 것을 방지합니까 (따라서 전체 종료 프로세스가 차단됨)? 필요한 경우 시작된 종료를 중지하고 "라운드"가 끝날 때까지 기다렸다가 * 자동으로 시스템을 종료하도록 변경할 수 있는지 궁금합니다. –

+1

@AndriyM VB 응용 프로그램이 종료되지 않도록합니다. 나는 지금 그것에 대해 생각하고있다. 어쩌면 거기에있는 일은 진행중인 실행중인 응용 프로그램 중 일부를 죽이기 전에 종료 프로세스를 충분히 빨리 취소해야합니다 (따라서 알고리즘이 망가질 수 있습니다). Shutdown이 멈추기 전에 항상 지연이있을 것이라고 생각하고 있습니다. 따라서 알고리즘에 문제가 생길 위험이 항상 있습니다. – ccxzy

답변

0

이 깨끗한 것은 아니다,하지만 나는 그것을 할 생각할 수있는 유일한 방법입니다.

외부 배치 파일 :

@ECHO OFF 
    :loop 
     if exist %temp%\done.flg (
      if exist %temp%\shutdown.flg shutdown -s -f -t 0 && del /Q %temp%\shutdown.flg 
      del /Q %temp%\done.flg 
      exit 
     ) 
     shutdown -a > NUL 2>&1 && echo shutdown detected > %temp%\shutdown.flg 
     ping localhost -n 2 > NUL 2>&1 
    goto loop 

원래 배치 파일 :

start "" "path\to\shutdown\stopper.bat" 
    :: back up code here 
    echo done > %temp%\done.flg 

이 그것 후 종료됩니다 성공하면, 종료 2 초마다 막으려 것이다.