ダウンロードが完了したらサスペンドする
動作確認環境:Windows XP HOME
使用方法:下記ソースをエディターでxxx.jsと保存する。ダブルクリック。
普段はサスペンドしてるんだけど、何かダウンロードしていても
サスペンドに移行してしまって、大きなファイルをダウンロードして
いると中断されてしまう。
レジュームできるダウンローダーが使用できないサイトとかあったりして。。
なにかをダウンロードしてる間はサスペンドに移行しないスクリプトを作った。
ダウンロードが完了したら(転送量が判定ラインを下回ったら)、サスペンドに
移行する。通信環境によって判定ラインは変更する必要があるかもしれない。
やっぱり止めたい時にはタスクマネージャからwscriptを停止する。
var JUDGE_LINE = 5000; //判定ライン(1秒間に受信したバイト数) main(); function main(){ for(;;){ var diff = get_diff(); if(diff >= JUDGE_LINE){ //判定ライン超過 WScript.sleep(60000); //1分待つ continue; } var wsh_shell = WScript.CreateObject("WScript.Shell"); wsh_shell.Run("rundll32.exe PowrProf.dll,SetSuspendState"); break; } } function get_diff(){ var first = get_packet(); //1回目のパケット数取得 WScript.Sleep(1000); //1秒待機 var second = get_packet(); //2回目のパケット数取得 var diff = Number(second) - Number(first); return diff; } function get_packet(){ var wsh_shell = WScript.CreateObject("WScript.Shell"); var exec = wsh_shell.Exec("netstat -e"); exec.StdOut.ReadLine(); exec.StdOut.ReadLine(); exec.StdOut.ReadLine(); exec.StdOut.ReadLine(); var ret = exec.StdOut.ReadLine(); //5行目を取得 var tmp = ret.replace(/ +/g,' '); //複数空白→1つの空白置換 var tmp1 = tmp.split(" "); //空白で切り分け return tmp1[1]; }