js写的闹钟,支持多个闹钟

因为玩一个游戏,该游戏可以支持多个号,每个号有好多等时间的任务。

来回切换看,太耽误时间。手机的闹钟操作太麻烦。

所以写了一个使用配置文件的闹钟,简单方便。

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+"-----------
++举例,在"+configPath+"中写入:
11 12 准备吃饭
表示在11点12分显示“准备吃饭”的闹钟
支持#开头注释掉一个闹钟
支持“+m n”的格式表示设置一个闹钟在m小时n分之后;会自动修改闹钟文件,所以下次修改需要重新打开ta.txt
支持每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("
");
			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)+',配置错误。
格式:mn s,如:“m35 三十五分钟”,表示每35分钟显示一次:三十五分钟
';
						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("重复提醒:
"+_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)+',小时错误
';
						f = true;
					}
					if(isNaN(_m)||_m<0 _m="">59){
						msg = '闹钟'+(i+1)+',分错误
';
						f = true;
					}
					if(!f && h==_h && m==_m){
						msg += _t+"
";
					}else if(f){					
						help(msg);
						msg = '';
					}
					warr.push(arr[i]);
				}
			}
			if(msg){
				var r = msgbox(msg);
				while(r==4){
					WScript.Sleep(60000);
					r = msgbox("重复提醒:
"+msg);
				}
			}
			if(wflag){
				var fso = new ActiveXObject("Scripting.FileSystemObject");
				f = fso.OpenTextFile(configPath, ForWriting, true);
				var txt = warr.join("
");
				f.Write(txt);
				f.Close();
			}
	
		}//else WScript.Echo('无闹钟
');
	/*}catch(e){
		help("出错了:"+e+";请检查闹钟配置。
");
	}*/
	WScript.Sleep(60000);
}pre>
<p>
	 
</p>
<p>
	配置文件为c:	a.txt。乱写一行,然后运行,会看到帮助提示
</p>
<p>
	使用方法:wscript 闹钟.js。
</p>
<p>
	 
</p>
<p>
	<br />
	 
</p></0></0></3>
原文地址:https://www.cnblogs.com/lein317/p/5067513.html