アプリケーションがバッチで実行されないようにするにはどうすればよいですか?

アプリケーションがバッチで実行されないようにするにはどうすればよいですか?

例えば:私は走るタスクマネージャそして閉じます。どうすればバッチ?

答え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

関連情報