• 締切済み

バッチでの強制終了の方法

バッチファイルであるプログラムを起動させ、そのバッチ内での強制終了を考えております。 そのプログラム(a.exe)は動作後、「OKボタン」を押さないと終了しない仕様になっています。仕様の変更は不可です。 まずは「OKボタン」を押すために、「ENTER」キーを押すか、 「alt」+「F4」キーを押すようなイメージのバッチ例を探してみましたが、これは難しいようでした。 そこで下のようなバッチを書きましたが C:\a.exe taskkill /F /IF a.exe 「エラー:プロセス ”a.exe” が見つかりませんでした。」 となってしまいました。 c:\a.exe のみをバッチで起動し、コマンドラインで c:\taskkill /F /IF a.exe とすると成功します。 何か他の設定が必要なのでしょうか?

みんなの回答

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.3

ちょうどデスクトップに置いていたvbsですが、いかがでしょうか。 バッチに拘りなければどうぞ。 ' 終了するプロセス名 proc_name = "AcroRd32.exe" ' プロセス一覧から、終了プロセスを指定 Set kill_proc = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _   ("select * from Win32_Process where Name='" & proc_name & "'") Set shell = WScript.CreateObject("WScript.Shell") ' 確認メッセージの表示 Msg = proc_name & "を強制終了します。よろしいですか?" rc = shell.Popup(Msg,,, vbOkCancel) If rc = vbCancel Then  Wscript.echo "強制終了を中止します。"  Wscript.Quit ElseIf rc = vbOK Then  for each Process in kill_proc   Process.terminate  Next End If Wscript.echo proc_name & "を終了しました。"

do1780
質問者

お礼

ありがとうございます。 しかしながら、VBSについては全く無知なのです。 今後の参考に出来ればと思います。

  • bardfish
  • ベストアンサー率28% (5029/17766)
回答No.2

「/IF」ではなく「/FI」ではないですか? 「/IM」の方は試しましたか? 「TASKKILL /?」として表示されるヘルプをもう一度呼んでみては如何でしょうか?

do1780
質問者

補足

失礼しました。 ご指摘通り、「/IF」は書き間違いでした。 正式バッチでは、 C:\a.exe taskkill /F /IM a.exe となっております。 この時のエラーメッセージが 「エラー:プロセス ”a.exe” が見つかりませんでした。」です。 「/FI」も試してみましたが、「条件にあうものがない」、と言われ、うまくいきませんでした。 

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.1

バッチのファイル名を変えてみるとか。 http://oshiete1.goo.ne.jp/qa3595924.html

do1780
質問者

補足

さっそくのご回答ありがとうございます。 taskkill自体は、探せていると思われ、”a.exe”自体がコマンドラインでは探せるけど、バッチだと探せなくなるのかな?と考えています。

関連するQ&A