特定のプロセスを終了したい場合があるかと思います。
そんな時には、「taskkill」コマンドを利用しましょう。
taskkillコマンドの使い方
今回は、プロセスID(PID)か、ユーザー名指定の消し方を紹介します。
その他の詳しい指定オプションに関しては、TechNetを参照ください。
Taskkill - TechNet - Microsoft
http://technet.microsoft.com/ja-jp/library/cc725602%28v=ws.10%29.aspx
イメージ名を指定する場合は「/im」オプションと、イメージ名を指定します。
c:\user\test_user>taskkill /im Skype.exe
PIDを指定する場合は「/pid」オプションと、PIDを指定します。
c:\user\test_user>taskkill /pid 3620
これらのオプションだけでは、指定プロセスが呼び出した子プロセスはkillされません。
子プロセスまで行う場合は、「/t」オプションを追加しましょう。
JavaScript関数化
(実際はJScriptになるわけですが、そこは記事の検索率UPという事でご勘弁)
関数化するために必要なのは、
・WshShellオブジェクトを生成する
・run関数で、コマンドを実行
です。
コマンドを叩く必要があるのでShellオブジェクトを作成しましょう。
// ActiveX版
var shell = new ActiveXObject("WScript.Shell");
// WScript版
var shell = WScript.CreateObject("WScript.Shell");
後は、「run」コマンドでウィンドウ無しで実行しちゃうだけです。
shell.run( 'cmd /c taskkill /im "Skype.exe"’, 0, true );
さて、準備が整いました。これらを使って関数化しましょう
// 指定プロセスを停止させる
// イメージ名指定 :文字列
// プロセスID指定:数値
//
// 単品or配列での指定が可能
function taskKill( param ){
var shell = WScript.CreateObject("WScript.Shell");
//var shell = new ActiveXObject("WScript.Shell");
// 配列指定対応
if( param instanceof Array ){
for( var i=0 ; i < param.length ; ++i ){
kill( param[i] );
}
}else{
kill( param );
}
// 内部関数
function kill( p ){
if( typeof( p ) === "number" ){
// 数値なら PID指定として実行
shell.run( 'cmd /c taskkill /pid ' + p, 0, true );
}else{
// イメージ名指定として実行
shell.run( 'cmd /c taskkill /im ' + p , 0, true );
}
}
}
使用例
taskKill( "Skype.exe" ); // イメージ名指定
taskKill( 3620 ); // PID指定
// 配列指定
taskKill( ["iexplore.exe", "firefox.exe"] );
taskKill( [3600, 4210] );
ちょっとしたJavaScriptの関数化Tipsを織り交ぜての紹介となりました。
プロセスが存在しているかどうか見るには、
「tasklist」コマンドで代用できたりします。
存在するかどうかの関数化に関してはまた次回。