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

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

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

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>

js写的闹钟,支持多个闹钟的更多相关文章

  1. js写的复制功能,只支持IE

    如果用js写,只能支持IE,如果想全支持,需要用jQuery的插件:jquery.zclip.js 下面是用js写的: var copyHref = function(){               ...

  2. 自己写的一个 java swing 的闹钟

    上一周新入职,把代码down下来之后,领导和我讲了一些大概的业务以及代码流程(领导是技术出身),领导让我自己先看看代码,然后我看了两天,觉得已经完全可以接任务了,但是领导却迟迟没有分配任务给我,虽然他 ...

  3. 去它的h5,我还是用js写原生跨平台app吧

    智能手机功能越来越强大,已经在逐渐替代电脑的作用.百度.腾讯.阿里的移动端日活数也在逐步的赶上甚至超越电脑端用户.叫喊着“mobile first”的公司越来越多,App开发者应运而生,且队伍日趋庞大 ...

  4. 分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”

    这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业 ...

  5. 【翻译】Ext JS 5的平板支持

    原文:Ext JS 5 Tablet Support Ext JS已被公认为桌面Web应用程序的领先框架.自从平板开始在全球挑战PC的销售,无论是个人还是企业,电脑横向的应用已经产生急剧的变化.Sen ...

  6. JS对表格排序(支持对序号,数字,字母,日期)

    JS对表格排序(支持对序号,数字,字母,日期) 前不久看到淘宝组件有"对表格排序的插件" 如想要看 可以看这个地址 http://gallery.kissyui.com/KSort ...

  7. ExtJs对js基本语法扩展支持

    ExtJs对js基本语法扩展支持 本篇主要介绍一下ExtJs对JS基本语法的扩展支持,包括动态加载.类的封装等. 一.动态引用加载 ExtJs有庞大的类型库,很多类可能在当前的页面根本不会用到,我们可 ...

  8. 玩转Javascript 给JS写测试

    给js写测试已经不是什么稀奇的事情了,最近项目里用了jasmine和JsTestDriver两种js测试框架.JsTestDriver易于与持续构建系统相集成并能够在多个浏览器上运行测试轻松实现TDD ...

  9. 使用 Node.js 写一个代码生成器

    背景 第一次接触代码生成器用的是动软代码生成器,数据库设计好之后,一键生成后端 curd代码.之后也用过 CodeSmith , T4.目前市面上也有很多优秀的代码生成器,而且大部分都提供可视化界面操 ...

随机推荐

  1. HQL查询——select子句

    select子句 select子句用于选择指定的属性或者直接选择某个实体,当然select选择的属性必须是from之后持久化类包含的属性: select p.name from Person as p ...

  2. arguments的理解

    (function(){ return typeof arguments; })(); 无聊的时候看看网上的面试题.个人认为通过面试题可以对某个知识点能够更加认识,踩过坑才会明白坑是有多大.代码中经常 ...

  3. codeforces 85D D. Sum of Medians 线段树

    D. Sum of Medians time limit per test 3 seconds memory limit per test 256 megabytes input standard i ...

  4. [转] - 在mac的终端中使用sublime打开文件

    在mac的终端中使用sublime打开文件 使用sublime提供的命令行工具.这个命令行工具位于 /Applications/Sublime\ Text\ 2.app/Contents/Shared ...

  5. Linux内核创建一个新进程

    张雨梅   原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-10000 创建新进程 如果同一个程序被多 ...

  6. Windows_RTM_RC

    1.https://zhidao.baidu.com/question/172764638.html RTM(Release to Manufacturing)版 软件在正式在零售商店上架前,需要一段 ...

  7. java面向对象的语言

    对象:真实存在唯一的事物. 类: 实际就是对某种类型事物的共性属性与行为的抽取. 抽象的概念.... 车 我们从小的时候就不断的接触很多的对象,我们的大脑就会把 这些具备相同属性与行为的事物进行分类. ...

  8. ~/.config/user-dirs.dirs【桌面设置】

    # This file is written by xdg-user-dirs-update # If you want to change or add directories, just edit ...

  9. javascript高级编程3第三章:基本概念 本章内容 语法 数据类型 流控制语句 函数

    3.1 语法 ECMAScript的语法大量借鉴了C及其他类C语言的语法. 3.1.1 区分大小写 3.1.2 标识符 所谓标识符,就是值变量.函数.属性的名字,或者函数的参数.标识符可以是按照下列格 ...

  10. Deep Learning 19_深度学习UFLDL教程:Convolutional Neural Network_Exercise(斯坦福大学深度学习教程)

    理论知识:Optimization: Stochastic Gradient Descent和Convolutional Neural Network CNN卷积神经网络推导和实现.Deep lear ...