js寫的鬧鐘,支持多個鬧鐘

由於玩一個遊戲,該遊戲能夠支持多個號,每一個號有好多等時間的任務。javascript

來回切換看,太耽誤時間。手機的鬧鐘操做太麻煩。java

 

因此寫了一個使用配置文件的鬧鐘,簡單方便。code

var ForReading = 1, ForWriting = 2;
var configPath = "./ta.txt";

function getTs(){
	return Math.floor((new Date()).getTime()/1000);
}
function GetEverything()
{
    try{
        var fso, f;
        fso = new ActiveXObject("Scripting.FileSystemObject");
        f = fso.OpenTextFile(configPath, ForReading);
		var r = f.ReadAll();
		f.close();
        return r;
    }catch(e){
    	return '';
    }
}
function msgbox(msg){
	var WshShell = WScript.CreateObject("WScript.Shell");
	var BtnCode = WshShell.Popup(msg, 180, "== 小鬧鐘 ==", 4 + 1 + 64);
	//WScript.Echo(msg);
	return BtnCode;
}
function help(msg){
	var WshShell = WScript.CreateObject("WScript.Shell");
	WshShell.Popup(msg+"-----------\n++舉例,在"+configPath+"中寫入:\n11 12 準備吃飯\n表示在11點12分顯示「準備吃飯」的鬧鐘\n支持#開頭註釋掉一個鬧鐘\n支持「+m n」的格式表示設置一個鬧鐘在m小時n分以後;會自動修改鬧鐘文件,因此下次修改須要從新打開ta.txt\n支持每n分鐘出提示:m35 起來休息一下子吧——每35分鐘顯示一次「起來休息一下子吧」", 60, "== 小鬧鐘 ==", 48);
}
while(true){
	//try{
		var txt = GetEverything();
		if(txt){
			var date = new Date();
			var h = date.getHours();
			var m = date.getMinutes();
			var arr = txt.split("\n");
			var msg = '';
			var wflag = false;
			var warr = [];
			for(var i=0;i<arr.length;i++){
				if(arr[i].substr(0,1)=='#'){
					warr.push(arr[i]);
					continue;
				}
				if(arr[i].substr(0,1)=='m'){
					var tmp = arr[i].split(' ');
					if(tmp.length<2){
						msg = '重複鬧鐘'+(i+1)+',配置錯誤。\n格式:mn s,如:「m35 三十五分鐘」,表示每35分鐘顯示一次:三十五分鐘\n';
						f = true;
						continue;
					}
					
					var _m = parseInt(tmp[0].substr(1),10);
					var ts = getTs();
					var _s = tmp[1];
					
					if(tmp.length<3 arr="" i="" tmp="" 0="" _s="" ts="" wflag="true;" else="" var="" lts="parseInt(tmp[2],10);" if="" ts-lts="" 60="">_m){
							arr[i] = tmp[0]+" "+_s+" "+ts;
							wflag = true;
							var r = msgbox(_s);
							while(r==4){
								WScript.Sleep(60000);
								r = msgbox("重複提醒:\n"+_s);
							}
						}
					}
					warr.push(arr[i]);
					continue;
				}
				if(arr[i].substr(0,1)=='+'){
					var tmp = arr[i].split(' ');
					var _h = parseInt(tmp[0].substr(1),10);
					var _m = parseInt(tmp[1],10);
					var __h = h+_h;
					var __m = m+_m;
					if(__m>59){
						__h = __h+Math.floor(__m/60);
						__m = __m%60;
					}
					if(__h>23){
						__h = __h%24;
					}
					arr[i] = __h+" "+__m+(tmp.length>2?(" "+tmp[2]):"");
					wflag = true;
				}
				var tmp = arr[i].split(' ');
				
				if(tmp.length>2){
					var _h = parseInt(tmp[0],10);
					var _m = parseInt(tmp[1],10);
					var _t = tmp.length>2?tmp[2]:('鬧鐘('+(i+1)+')');
					var f = false;
					if(isNaN(_h)||_h<0 _h="">24){
						msg = '鬧鐘'+(i+1)+',小時錯誤\n';
						f = true;
					}
					if(isNaN(_m)||_m<0 _m="">59){
						msg = '鬧鐘'+(i+1)+',分錯誤\n';
						f = true;
					}
					if(!f && h==_h && m==_m){
						msg += _t+"\n";
					}else if(f){					
						help(msg);
						msg = '';
					}
					warr.push(arr[i]);
				}
			}
			if(msg){
				var r = msgbox(msg);
				while(r==4){
					WScript.Sleep(60000);
					r = msgbox("重複提醒:\n"+msg);
				}
			}
			if(wflag){
				var fso = new ActiveXObject("Scripting.FileSystemObject");
				f = fso.OpenTextFile(configPath, ForWriting, true);
				var txt = warr.join("\n");
				f.Write(txt);
				f.Close();
			}
	
		}//else WScript.Echo('無鬧鐘\n');
	/*}catch(e){
		help("出錯了:"+e+";請檢查鬧鐘配置。\n");
	}*/
	WScript.Sleep(60000);
}pre>
<p>
	 
</p>
<p>
	配置文件爲c:\ta.txt。亂寫一行,而後運行,會看到幫助提示
</p>
<p>
	使用方法:wscript 鬧鐘.js。
</p>
<p>
	 
</p>
<p>
	<br />
	 
</p></0></0></3>
相關文章
相關標籤/搜索