• ベストアンサー

バッチコマンドで

taskkill /IM sylpheed.exe と書けば、メールソフトsylpheedが終了するらしいのですが、 終了要求を出すだけで終了を待つことはないようです。 終了を待つにはどうしたら良いでしょうか? /F 指定で強制終了はまずいと思います。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

D:\>taskkill /IM notepad.exe 成功: プロセス "notepad.exe" (PID 5320) に強制終了のシグナルを送信しました。 これだけでは誤解を招きそうですが、未保存のデータを抱えていたときは「変更を保存しますか?」というポップアップが出ます。 D:\>taskkill /F /IM notepad.exe 成功: プロセス "notepad.exe" (PID 7432) は強制終了されました。 こちらはまさに強制終了。有無を言わさずにプロセスは落とされ、未保存のデータは破棄されます。 >/F 指定で強制終了はまずいと思います。 未保存のデータが破棄されてしまうので、上流での人間系からすると確かにまずいと思うのですが、そのようなプロセスに対してはtaskkillを実行することがシステム上適切でない ということでは? 破棄されてしまうようなデータがない場合には別に問題はないと思うのですが? そもそも何故メーラをtaskkillで強制終了させねばならないのでしょうか? taskkill発行時に終了完了を待つことはコマンドレベルでは無理でしょう。終了タイミングを通知する方法で起動することから始めなければダメだと思います。 ・cmdとpowershellを組み合わせたtaskkillと”File_name | Out-Null” ・cmdでのstart /wait コマンド(回答しようとしたら、他の方が既に書かれておいでですね…w) 何れも起動時に指定する方法です。 これらでプロセスの終了タイミングは判断できるでしょうが、結局/Fパラメータを使わないtaskkillを使う限りは、未保存のデータがある場合にはポップアップが出て停止してしまうのでは? その/Fパラメータはまずいと思う上流での理由と、taskkillで強制終了させるという目的次第ではないかと思います。 繰り返しになりますが、”taskkill /F”で破棄されてしまって困るデータがない場合には別に問題はないと思います。

maiko0333
質問者

補足

・メールソフトですからダウンロード中のメールを受信中は 終わらせたくないのです。 ・バックアップはメール情報もコピーしていますから 中途半端なコピーをするとバックアップの意味がなくなるのです。

その他の回答 (2)

  • kteds
  • ベストアンサー率42% (1882/4440)
回答No.3

No.1の補足です。 バッチファイルの中で 次のようにtasklistの実行結果で判定して TASKLIST /FI "IMAGENAME eq sylpheed.exe" "情報: 指定された条件に一致するタスクは実行されていません。" という文字列が返ってくればsylpheed.exeは終了している、 そうでなければ実行中である、と判定する記述を追加してはどうでしょうか。 --- ただし、タスクが実行中の場合は、 タイマーで繰り返して判定する必要があるでしょう。 また、判定文字列 "情報: 指定された条件に一致するタスクは実行されていません。"は 日本語環境の場合ですので、ロケールに合わせる必要があります。

maiko0333
質問者

お礼

私にはプログラムは書けませんので諦めます。

  • kteds
  • ベストアンサー率42% (1882/4440)
回答No.1

startコマンドでsylpheedが終了するまで待つ(waitオプション)ということなら下記を試してみてください。 start /wait sylpheed.exe || goto QUIT :QUIT exit ---startコマンドはwin10ヘルプを参照してください。 http://imgur.com/as8YZ4V

maiko0333
質問者

補足

言葉が足りませんでしたね。 バックアップをしたいのです。 なので、 --- sylpheed.exe 終了 終了を待つ バックアップ sylpheed.exe 開始 --- としたいです。

関連するQ&A