• ベストアンサー

taskkill をバッチ処理できない。

バッチファイルを作って、taskkillを実行しようとしましたが、出来ません。 ファイル名は、たとえば、task.bat 中身には、 taskkill /F /im imagename と入れました。 これで実行すると、MSDOSウインドウが開いてバッチ処理が開始されますが、 taskkill /F /im imagename が、永遠に連続して繰り返し現れて、いつまでたっても終わりません。 また、kill 自身も実行されておりません。 copy コマンドなどでは、問題なくできます。 MSDOSプロンプトを手動で開いて、手で入力して実行すると、問題なくKillできます。 なぜでしょうか。

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

  • ベストアンサー
  • Werner
  • ベストアンサー率53% (395/735)
回答No.1

> ファイル名は、たとえば、task.bat 本当は「taskkill.bat」にしていると言うことはありませんか? その場合はファイル名を変えてください。

chachakabu
質問者

お礼

お返事ありがとうございました。 たしかに名前は、TaskKill.bat にしていました。 名前を変えたら、うまくいきました。 どうしてでしょうか。 ちょっとびっくりしました。 教えていただき、ありがとうございました。

chachakabu
質問者

補足

ああ、わかりました。 バッチファイルを実行した際に、taskkill を見て、taskkill.batの方を実行したために再帰的に無限ループに入ってしまった、ということですね。 であれば、了解です。 ほんものの、taskkillコマンドよりも、バッチファイルの方が優先されるのですね。

その他の回答 (1)

  • mashkun
  • ベストアンサー率23% (86/364)
回答No.2

> ほんものの、taskkillコマンドよりも、バッチファイルの方が優先されるのですね。 そう単純では無いです。 DOS/Windowsではカレントディレクトリをまず探し、次にPATHに指定されたフォルダを順に探します。 taskkill.exeが先に見つかるようにしておけば、taskkill.batという名前を付けていてもまともに動きます。 まあ混乱の元ですから避けた方が無難なのは言うまでもありません。

chachakabu
質問者

お礼

お返事ありがとうございました。 なるほど、taskkill.exeもファイルなので、指定されたパス順にみていくということなのかな。 内部コマンドと勘違いしていました。 ありがとうございました。

関連するQ&A