web-dev-qa-db-ja.com

Windowsでbatプロセスを停止する方法は?

WindowsでBATファイルをバックグラウンドで実行しています。これは約10分間続きます。実行中に停止したいのですが、タスクマネージャのプロセスリストでその名前を見つけることができません。それで、私はこれにどのように取り組むことができますか?ありがとう!

PDATE1

バックグラウンドで実行中のBATプロセスを停止するのは難しいようです。私は、BATファイルに関係するすべてのプロセスを名前で強制終了しようとします。 ping、tracert、netstatなど。より良い解決策がある場合は、お知らせください。ありがとうございます。

PDATE2

BATプロセスツリー

alt text

11
SpawnST

プロセスは通常、ツリーのような方法で起動されます。起動することをお勧めします Microsoft/Sysinternals Process ExplorerShow Process Tree(1)オプションをクリックして開始し、プロセスを見つけて右クリックし、 Kill Process Treeを選択します(2)これにより、元のファイルとそれが起動したすべてのファイルの両方が強制終了されます。

alt text

11
William Hilsum

コマンドの間にファイルの存在のチェックを挿入することにより、ロックファイルを使用して操作を続行するようにバッチファイルを変更できます。バッチファイルの実行を停止するには、ロックファイルを削除します。

ここにデモバッチファイルがあります:

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
5
harrymc

BATは通常、CMD.exeのインスタンスを起動するだけです。スクリプトの動作に応じて、他のプロセスも開始されます。

1
vcsjones

私は、少なくともBATがCMDウィンドウで実行されている場合に役立つ app を作成しました。実行中のアプリケーションウィンドウを表示してアプリのPIDを取得できます。その後、アプリでアプリウィンドウを強制終了できます。また、生成されたすべてのプロセスを確認して強制終了することもできます。本当にシンプルなプログラムですが、この種のことには効果的です。また、BATファイルが実行されているHD上の場所を正確に追跡することもできます。

1
MaQleod

バッチファイルはどのように呼び出されますか?
タスクスケジューラからのものである場合は、そこから停止することもできます。サービスからのものである場合は、サービスを停止できます。

1
weismat

この掲示板のスレッドを見つけました:

http://www.gamedev.net/community/forums/topic.asp?topic_id=261694

ShellExecuteEx(またはCreateProcess)を使用して、プロセスハンドルを取得し、それを使用してプロセスを強制終了することをお勧めします。

1
Chris Hulan

コマンドプロンプトで開いている場合は、 Ctrl+C。数秒待つと終了します。

0
harvey hopkins