
例えば:私は走るタスクマネージャそして閉じます。どうすればバッチ?
答え1
バッチ スクリプトを使用してこれを行う方法として私が思いつくのは、.bat をバックグラウンドで実行したままにして、特定のアプリケーション プロセス イメージ名が実行されているかどうかを継続的にループしてチェックすることです。
しかし、a) そもそもプロセスの実行を停止するのではなく、プロセスを自動的に終了したい理由がわかりません。
b) バッチ スクリプトでこれを行う理由がわかりません。バッチ スクリプトは Windows イベントに自動的に応答しないため、実行中のものを確認する無限に実行されるループを間に合わせで作成するしかありません。
c) バッチ処理は、ハンマーでトランプの家を建てるようなもので、私はそれが大好きです。だから、とにかく、あなたのような年寄りには、答えはこうです:
@ECHO OFF
:loop
set "app=TASKMGR.exe"
::Set Output of tasklist command to variable %TL%
FOR /F "tokens=* USEBACKQ" %%A IN (`TASKLIST /FI "IMAGENAME EQ %app%"`) DO (SET "TL=%%A")
::check for "info:no( tasks are running which...)"
::any other output, task exists, so kill it
IF "%TL:~0,8%" NEQ "INFO: No" (TASKKILL /FI "IMAGENAME EQ %app%")
::beware of velociraptors
goto :loop
個人的には、このスクリプトの方が好き
@ECHO OFF
MODE CON: COLS=80 LINES=2
set "A=*** "
:loop
set "app=TASKMGR.exe"
FOR /F "tokens=* USEBACKQ" %%A IN (`TASKLIST /FI "IMAGENAME EQ %app%"`) DO (SET "TL=%%A")
IF "%TL:~0,8%" NEQ "INFO: No" (TASKKILL /FI "IMAGENAME EQ %app%")
SET "A= %A:~0,15%"
echo (@)@):::::::D%a:~1,15%%APP%
if "%A%" equ " ***" set "A=*** "
goto :loop