2016-11-06 2 views
-1

실행되는 모든 작업을 죽이는 파일을 작성하려고합니다. 나는이 작업들을 죽이는 방법을 알고 있지만 if() then 명령을 쓰는 데 도움이 필요합니다. 내가 원하는 모든 명령 프롬프트가 닫혀있는 경우 다음 컴퓨터가를 로그 오프 곳으로 그것을 만들 것입니다. 또한, 나는 shutdown/l 인 로그 오프 명령을 수행하는 방법을 알고있다. 아무도 이것으로 나를 도울 수 있습니까? 짜잔 ...if() then 명령어 작성에 도움이 필요합니다.

@echo off 
:loopme 
start /WAIT "c:\path\to\batch.file.bat" 
goto loopme 

는 시작 메뉴에서 시작 폴더에 있음을 넣어 ... 그리고 :

+0

또는이를 수행 할 방법이 없으면 클릭 한 번으로 트리거하지 않고 배치 파일을 다시 시작하는 방법 일 수 있습니다. 또는 배치 파일을 닫을 수 없도록 만드는 방법. – Addison

답변

0

사용 autohotkey는 백그라운드에서이를 실행합니다!

희망이 도움이됩니다. ~ CSS

0

는 아마 주요 배치 파일의 PID가있는 경우 확인하는 모니터 배치 파일 ...
이 주요 파일 :

그것은 pid.pref에서 현재 PID 저장을 얻는다
@echo off 
setlocal 
title Main Batch File 
set T=%TEMP%\sthUnique.tmp 
wmic process where (Name="WMIC.exe" AND CommandLine LIKE "%%%TIME%%%") get ParentProcessId /value | find "ParentProcessId" >%T% 
set /P A=<%T% 
set PID=%A:~16% 
echo %PID% > pid.pref 
rem The rest of the file is down here... 

.
모니터 배치 파일 :

@echo off 
setlocal 
title Monitor 
start mainfile.bat 
ping localhost -n 1 -w 2000 >NUL 
< pid.pref (set /p pid=) 
:loop 
tasklist /fi "PID eq %pid%" |find ":" > nul 
if "%ERRORLEVEL%"=="1" (
    shutdown.exe /s /t 00 
    exit 
) 
goto loop 

모니터 배치 파일을 검사하지가 컴퓨터를 종료하면 같은 PID를 가진 프로세스가 존재합니다. 이제 메인 배치 파일이 닫히고 Windows가 새 프로세스에 동일한 PID를 제공 한 후에 프로세스가 열리면 불행 할 수 있습니다. 그러나 이것은 거의 없습니다.
그건 그렇고, 모니터를 먼저 시작하면, 그것은 자신의 메인 파일을 시작합니다.

참고 : 나는 이 아니며은 이것을 테스트했습니다.

관련 문제