プロが教える店舗&オフィスのセキュリティ対策術

バッチファイルであるプログラムを起動させ、そのバッチ内での強制終了を考えております。
そのプログラム(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
とすると成功します。

何か他の設定が必要なのでしょうか?

A 回答 (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 & "を終了しました。"
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/07/16 11:54

「/IF」ではなく「/FI」ではないですか?


「/IM」の方は試しましたか?

「TASKKILL /?」として表示されるヘルプをもう一度呼んでみては如何でしょうか?

この回答への補足

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

「/FI」も試してみましたが、「条件にあうものがない」、と言われ、うまくいきませんでした。 

補足日時:2009/07/09 17:16
    • good
    • 0

バッチのファイル名を変えてみるとか。


http://oshiete1.goo.ne.jp/qa3595924.html

この回答への補足

さっそくのご回答ありがとうございます。

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

補足日時:2009/07/09 15:11
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!