WindowsでBATファイルをバックグラウンドで実行しています。これは約10分間続きます。実行中に停止したいのですが、タスクマネージャのプロセスリストでその名前を見つけることができません。それで、私はこれにどのように取り組むことができますか?ありがとう!
PDATE1
バックグラウンドで実行中のBATプロセスを停止するのは難しいようです。私は、BATファイルに関係するすべてのプロセスを名前で強制終了しようとします。 ping、tracert、netstatなど。より良い解決策がある場合は、お知らせください。ありがとうございます。
PDATE2
BATプロセスツリー
プロセスは通常、ツリーのような方法で起動されます。起動することをお勧めします Microsoft/Sysinternals Process Explorer 、Show Process Tree
(1)オプションをクリックして開始し、プロセスを見つけて右クリックし、 Kill Process Tree
を選択します(2)これにより、元のファイルとそれが起動したすべてのファイルの両方が強制終了されます。
コマンドの間にファイルの存在のチェックを挿入することにより、ロックファイルを使用して操作を続行するようにバッチファイルを変更できます。バッチファイルの実行を停止するには、ロックファイルを削除します。
ここにデモバッチファイルがあります:
echo xx > "c:\temp\lockfile"
pause
if not exist "c:\temp\lockfile" goto exit
pause
del "c:\temp\lockfile"
:exit
現時点で実行されている可能性のあるプロセスを激しく強制終了するには、バッチファイルから起動される可能性のあるすべてのタスクの taskkill コマンドを含む「kill」バッチファイルを作成します。
del "c:\temp\lockfile"
taskkill /im mytask1.exe
taskkill /im mytask2.exe
BATは通常、CMD.exeのインスタンスを起動するだけです。スクリプトの動作に応じて、他のプロセスも開始されます。
私は、少なくともBATがCMDウィンドウで実行されている場合に役立つ app を作成しました。実行中のアプリケーションウィンドウを表示してアプリのPIDを取得できます。その後、アプリでアプリウィンドウを強制終了できます。また、生成されたすべてのプロセスを確認して強制終了することもできます。本当にシンプルなプログラムですが、この種のことには効果的です。また、BATファイルが実行されているHD上の場所を正確に追跡することもできます。
バッチファイルはどのように呼び出されますか?
タスクスケジューラからのものである場合は、そこから停止することもできます。サービスからのものである場合は、サービスを停止できます。
この掲示板のスレッドを見つけました:
http://www.gamedev.net/community/forums/topic.asp?topic_id=261694
ShellExecuteEx(またはCreateProcess)を使用して、プロセスハンドルを取得し、それを使用してプロセスを強制終了することをお勧めします。
コマンドプロンプトで開いている場合は、 Ctrl+C。数秒待つと終了します。