質問: windows環境である製品の外部コマンドで実行したものをリダイレクトしてテキスト出力しています。 イメージはこんな感じです。 C:\Users\xxx>aaaa.aaa >> hogehoge.log 普通にコマンドプロンプトで起動したときには、そのコマンドプロンプトを停止すれば、関連するものがすべて停止してくれます。 ただ、そのコマンドをコマンドプロンプトを表示しないようにバックグラウンドで起動していたいので、vbsから実行します。 しかし、vbsで実行すると、起動したものをまとめて終了させることができず、自分が考えてやっているやりかただと、 1. tasklistで実行前に動いているプロセスを確認する 2. そのコマンドをvbsで実行する 3. tasklistで実行後に動いているプロセスを確認する すると、3つのプロセス、cmd.exeとperl.exeとjava.exeが実行されていることがわかったので、 これを無理やりtaskkillで消しています。 taskkillせずに、リダイレクトしているテキストを削除しようとすると、perlが掴んでいるや、javaが掴んでいるというメッセージが表示されますが、taskkillすると、普通に削除できるようになるので、これで起動した分が停止できて、起動前の状態になったと思っています。 そこで質問です。 widnwos環境において、プロセスを停止すれば、実行されたものはすべて停止できたという考え方でよいんでしょうか。 (もちろん、その外部コマンドが裏でファイル生成しているかもなどはあるかと思いますが、windows的に、実行が停止されたのかということです。) また、今回のような場合に、他に調べる方法や、他にこんなやり方があるなどあれば教えてください。
回答: vbsからプログラムを起動しているなら runかexecメソッドで呼び出しているはずなんですが execメソッドの場合、プロセスIDが取得できます。 例。 https://www.atmarkit.co.jp/ait/articles/0712/27/news083.html objExec.ProcessId この方法でプロセスIDを取得したら 後はtaskkill でもたたけば行けますよ