- 締切済み
バッチでの強制終了の方法
バッチファイルであるプログラムを起動させ、そのバッチ内での強制終了を考えております。 そのプログラム(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 とすると成功します。 何か他の設定が必要なのでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kuroizell
- ベストアンサー率55% (95/170)
ちょうどデスクトップに置いていた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 & "を終了しました。"
- bardfish
- ベストアンサー率28% (5029/17766)
「/IF」ではなく「/FI」ではないですか? 「/IM」の方は試しましたか? 「TASKKILL /?」として表示されるヘルプをもう一度呼んでみては如何でしょうか?
補足
失礼しました。 ご指摘通り、「/IF」は書き間違いでした。 正式バッチでは、 C:\a.exe taskkill /F /IM a.exe となっております。 この時のエラーメッセージが 「エラー:プロセス ”a.exe” が見つかりませんでした。」です。 「/FI」も試してみましたが、「条件にあうものがない」、と言われ、うまくいきませんでした。
- kuroizell
- ベストアンサー率55% (95/170)
バッチのファイル名を変えてみるとか。 http://oshiete1.goo.ne.jp/qa3595924.html
補足
さっそくのご回答ありがとうございます。 taskkill自体は、探せていると思われ、”a.exe”自体がコマンドラインでは探せるけど、バッチだと探せなくなるのかな?と考えています。
お礼
ありがとうございます。 しかしながら、VBSについては全く無知なのです。 今後の参考に出来ればと思います。