问题引出

工作中习惯使用番茄时间法则,把工作时间切分为40分钟左右的一个个小块然后安排任务。这里用到了倒计时器,一般有几种形式:

  • 手机倒计时
  • 浏览器插件
  • 桌面软件

手机倒计时在静音模式下依然会发出声响,适合在家一个人的时候使用。浏览器插件不会跨窗口弹出提示,适合浏览器使用较多的时候使用。桌面软件是个不错的选择,但是已有的一些软件设计上不够简洁,而且有些还需要付费。

由此,便想到自己写一个简单的倒计时器。

解决思路

在Windows系统下,使用Shell脚本(timer.sh)读取输入时间,并开始倒计时。当时间到时,调用Bat脚本(alert.bat)创建临时VBScript脚本(MessageBox.vbs),跳出弹窗提示,并播放音效。

timer.sh

clear# get input for minutes
echo -n "Enter countdown minutes and press [ENTER]: "
read minutes# set default value
if echo "$minutes" | egrep -q '^\-?[0-9]+$'; then echo "Input is: $minutes."
else minutes=40
fi
seconds=$minutes*60# start countdown
for ((i=$seconds;i>0;i--)); doseconds_remaining=$((i%60))minutes_remaining=$((i/60))sleep 1 &printf "Time Remaining: $minutes_remaining:$seconds_remaining \r"wait
donestart / alert.batclear

alert.bat

:: hide all output messages
@echo off
echo off:: play sound
set "file=C:\Temp\test-workspace\cmd-timer\ding.mp3"
( echo Set Sound = CreateObject("WMPlayer.OCX.7"^)echo Sound.URL = "%file%"echo Sound.Controls.playecho do while Sound.currentmedia.duration = 0echo wscript.sleep 100echo loopecho wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000
) > sound.vbs
start /min sound.vbs:: show message box
cscript C:\Temp\test-workspace\cmd-timer\MessageBox.vbs > nul:: delete the sound scipt
del sound.vbsexit

MessageBox.vbs

messageText = "Time is up!"
MsgBox messageText, vbSystemModal

如何运行

  • 设置三个脚本和音效的目录,例子中是放在C:\Temp\test-workspace\cmd-timer。
  • timer.sh,根据提示输入时间,default是40分钟。

转载于:https://www.cnblogs.com/maxstack/p/9634395.html

【熟能生巧】系列第2期 - 倒计时脚本相关推荐

  1. 运行时常量池在哪里_C++干货系列——从编译期常量谈到constexpr(一)

    C++20都支持虚函数的constexpr了,我打算用三篇读文章讲清楚编译期常量和constexpr这个东西和编译期常量的关系,即为什么需要他来辅助解决这个问题.最后帮助读者在实际编码过程中能够有意识 ...

  2. Linux学习系列五:Shell命令脚本的基本语法

    这个系列的Linux教程主要参考刘遄老师的<Linux就该这么学>.用的系统是RHEL8,如果遇见一些命令出现问题,请首先检查自己的系统是否一致,如果不一致,可网上查一下系统间某些命令之间 ...

  3. jquery十秒倒计时_10个很棒的jQuery倒计时脚本

    jquery十秒倒计时 在大多数网站(如RapidShare,MegaUpload等)中,我们已经看到了足够的倒计时功能示例,这些示例可让您下载文件,但让您等待指定的秒数,然后才能获得下载链接. 我们 ...

  4. python 写脚本 预约课程_Python盘纪念币系列之三:自动预约脚本编写 03 系列总结...

    前一篇遗漏了"预约兑换日期"的自动输入,这篇文章将介绍如何处理.另外,将会对"Python盘纪念币系列"做一个简单的总结. 自动输入预约兑换日期 不像文本输入框 ...

  5. Jmeter系列之Fiddler导出Jmeter脚本

    VOL 170 29 2020-10 今天距2021年63天 这是ITester软件测试小栈第170次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 0 ...

  6. RedHat系列软件管理(第二版) --脚本安装

    RedHat系列软件管理 --脚本安装 一.解压缩 tar -zxvf webmin-1.700.tar.gz 二.进入相关目录 cd webmin-1.700 三.如果此时执行./configure ...

  7. Linux系统重装出现c0409a9f,自学IT吧论坛Linux系统运营系列视频教程#28期2016系统/服务器资源天地 - www.zxit8.com...

    0001-老学员学习方法心得分享说明9 Q) B4 d  x. R# l 0002-oldboy运维26期学员侯同学-13k入职8 j" I4 p+ m$ Z9 A9 d' @; f! O ...

  8. Appium自动化测试系列2- 写一个Python测试脚本来测试一下YY语音

    我们在<Appium自动化测试系列1-Appium环境的安装和配置>里已经搭好了Appium的基本环境,这一章,我们就来真刀真枪使用一下Appium, 看看Appium是如果来实现自动化测 ...

  9. javplayer 使用教程_每日更新 | 立创EDA画图不求人系列视频教程@第一期目录

    如果觉得文章对你有用,那就转发,让更多人知道吧 教程内容:立创EDA画图不求人系列,是电子芯原创的立创EDA绘图技巧视频教程,每一个技巧只需要不到3分钟的时间就可以完成学习.立创EDA支持window ...

最新文章

  1. 如何用eclipse操作MySQL数据库进行增删改查?
  2. 微信浏览器跳转页面加载loading效果问题
  3. 李彦宏被提名工程院院士,而美女教授颜宁落选,当选为美国院士
  4. 智能算法PSO的图例分析
  5. C# int与string转化
  6. [转载]EXT核心API详解(一)-Ext
  7. C语言给出任意4个数算24点,讨论24点算法。
  8. java 需要 不是语句,我应该避免使用Java标签语句吗?
  9. NVIDIA Nsight Compute,Nsight Systems, Nsight Graphics,Nsight Deep Learning Designer简介-草稿
  10. 翻译pdf中的英文 python_看不懂pdf中的英文?就用Python
  11. WinPE下修改本地系统注册表
  12. 3D打印Arduino 四轴飞行器
  13. result.append(path)与result.append(path[:])的区别
  14. ios 开发者证书付费三种类型区别
  15. 基于single-spa+vue的前端微服务项目实践
  16. JavaScript遍历数组和对象
  17. vue实现input输入模糊查询(三种方式)
  18. python星空画法教程_零基础也能画好的星空教程|利用午休时间画出你的星辰大海...
  19. 又写无关IT的东西:经济学术语
  20. python打开浏览器不显示浏览器页面_python+selenium 浏览器无界面模式运行

热门文章

  1. weblogic点击服务器没有信息,无法安装Weblogic服务器12C,jar文件甚至没有打开
  2. html代码格式化nodejs,使用Node编写的Sublime代码格式化工具插件(HTML/CSS/JS)
  3. mysql innodb row_format_INNODB物理行结构(ROW_FORMAT=COMPACT) | 学步园
  4. c++ windows 光标操作_电脑操作常用快捷键
  5. python 获取本地视频信息_python获取视频文件信息
  6. linux 文件读写锁,linux下的简单文件读写锁的操作
  7. php 增加数组下标_PHP数组排序更改下标KEY方法
  8. java推送到 钉钉用户_javaweb利用钉钉机器人向钉钉群推送消息(解决中文乱码)...
  9. 智能一代云平台(四十):Maven项目如何将lib下依赖的包打印在manifest文件中
  10. 网易AI孵化项目获上亿元首轮融资,主打AR+AI