2016-11-06 5 views
-1

実行中のすべてのタスクを殺すファイルを書き込もうとしています。私はこれらのタスクを殺す方法を知っていますが、if()thenコマンドを書くのに助けが必要です。私がやりたいすべては、コマンドプロンプトが閉じている場合は、コンピュータがをログオフするところにそれを作るです。また、私はshutdown/lであるログオフコマンドを実行する方法を知っています。誰もがこれで私を助けてくれる?これをバックグラウンドで実行するためのif()thenコマンドを書くのに助けが必要です

+0

これを行う方法がない場合は、クリックによってトリガーされずにバッチファイルを再起動する方法があります。または、バッチファイルを閉じることができないようにする方法。 – Addison

答えて

0

使用autohotkey

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

は、スタートメニューのスタートアップフォルダにあることを入れて...と...出来上がり!

願っています! 〜CSS

0

たぶんメインバッチファイルの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... 

現在のPIDとpid.prefに格納を取得します。
モニタバッチファイル:

@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を与えた直後にプロセスが開かれた場合、不運になる可能性がありますが、これはほとんどありません。
ところで、まずモニタを起動して、メインファイルを起動します。

注:はありません。はこれをテストしました。

関連する問題