小标题:DOS快餐店(五)
和时间做游戏
■掌柜的
★★
√date和time命令的使用
√利用脚本突破软件试用时间限制
忙碌了一天,掌柜的望着窗外渐渐西下的夕阳,神色凝重地对身边的伙计嘟哝着:“哎……又一天过去了,还有两天ABC软件(该软件的主程序路径为“d:\\abc.exe”)的试用期就结束了。”伙计看了看日历后说:“这有何难?不就是时间限制嘛,看我的。”(当天日期:2005年3月15日 软件最后使用期限:2005年3月17日)。
注意:Windows 98中date/time命令的使用和Windows 2000/XP/2003中并不完全一致,本文中的命令以Windows XP中为例。
@echo off
date 2005-03-15
d:\\abc.exe
随手写了几行代码并保存为abc_crk.bat,将桌面上ABC软件快捷方式指向了这个批处理文件。这样当通过批处理运行这个软件时,就会在运行前先将系统时间设置为未过期的时间,这样就变相地绕过了软件的试用期限。
注意:此方法仅用于帮助希望能进一步试用软件的用户延长试用期,请勿用于非法用途!

本期配料:date/time 适宜人群:没有DOS基础的初学者
首先当然先带大家来“尝尝”date命令,如果仅仅输入“date”,会出现什么情况呢?
此时会首先显示出当前的系统日期,格式为“当前日期:YYYY-MM-DD 星期X”,然后提示“输入新日期:<年 月 日>”(见图1)。我们可以在提示输入新日期处输入形如“2005-03-15”的日期数据来改变当前系统日期。

小提示
以上为Windows 2000/XP/2003的命令输出信息,而在Windows 98中为“Current date is XXX MM-DD-YYYY”,XXX代表英语的星期几(如Wed,星期三),MM-DD-YYYY代表“月-日-年”(如“03-30-2005”)。

当我仅仅想修改系统日期,而不想看当前的日期时,能不能省一些操作?当然可以,本文开头的那个突破软件使用期限的脚本中已经使用了此方法。
目标1:直接修改系统日期到2005年8月2日
适用于Windows 98:date 2005-08-02
适用于Windows 2000/XP/2003:date 08-02-2005
命令格式:date YYYY-MM-DD(Windows 2000/XP/2003)/date MM-DD-YYYY(Windows 98)
命令讲解:date命令后直接跟上一条日期参数,就能不显示任何多余的信息而直接修改系统日期。其中月份和日期可以用单位数,如“08-02”也可写为“8-2”。
而又有的时候,我们的需要又恰恰相反,不要改动系统时间,我们需要的仅仅是显示。
目标2:显示当前系统日期,不提示输入新日期
date/t(Windows 98不支持此参数)
命令格式:date/t
命令讲解:执行带/t参数的date命令后,就不再提示需要输入新日期了,而是直接显示出了当前的系统日期(见图2)。

现在该轮到time命令唱主角了,你能在time命令中找到与date命令的相似之处。如果仅仅执行“time”,情况会是如何呢?你猜得没错,和date命令一样,先显示了一下当前的系统时间(见图3),随后要求输入新的系统时间。
目标1:直接修改系统时间到02:15:30
time 02:15:30
命令格式:time HH:MM:SS
命令讲解:和date命令基本一致,在命令中直接使用时间参数后,就不再显示当前系统时间,而直接设置系统时间。

小提示
对于系统时间有较高要求的用户可以双击桌面下方任务栏中的系统托盘的时间,打开“日期与时间 属性”窗口,在“Internet时间”选项卡中点击“立即更新”按钮,这样系统时间就能和网络中的时间服务器同步了(见图4)。如果是Windows XP,则可执行命令“w32tm /resync /rediscover”(不含引号)来完成同步,我们也可以把这条命令做成批处理置于桌面上。

目标2:显示当前系统时间,不提示输入新时间
time/t(Windows 98不支持此参数)
命令格式:time/t
命令讲解:执行带/t参数的time命令后,就不再提示需要输入新时间了,而是直接显示出了当前的系统时间。

本期大餐:禁止用户在指定日期运行QQ
适宜人群:有一定脚本基础的老鸟
第一步:将以下脚本保存为runqq.bat,放在QQ安装目录下(其中的“2005-03-15 星期二”可修改为禁止运行QQ的日期)。
注意:此脚本文件仅支持Windows 2000及以上操作系统。
@echo off
if “%DATE%” NEQ “2005-03-15 星期二” qq.exe else goto err
exit
:err
echo 今天不准用QQ聊天
pause
第二步:右击桌面上的QQ快捷方式,在“快捷方式”选项卡中将“目标”修改为runqq.bat的路径(见图5)。
脚本讲解:%DATE%是命令行方式中自带的一个变量,可以通过该变量来直接获取等同于执行“date/t”命令的返回值,但由于返回值是类似“2005-03-15 星期二”这样中间带有空格的值,所以为了保证语句能够正确运行,我们必须在其两侧加上英文双引号。而NEQ则是一个比较运算符,代表“不等于”,即其左侧的变量(“%DATE%”)不等于右侧的值(“2005-03-15 星期二”)时,执行后面的操作(即执行“qq.exe”)。而if语句中如果带有else,则当判断条件不成立(这里要判断成立的条件是“”%DATE%”不等于”2005-03-15 星期二””,如果两个值相等,条件就不成立)时,自动执行else后接着的语句(即“goto err”)。其后的goto,相信大家已经猜到了,这不就是“走到”的意思吗?没错,goto就是让程序“走到”(跳转到)指定的标签位置,这里要跳转到err位置然后继续执行,即显示“今天不准用QQ聊天”。
由于程序是由上至下顺序执行的(以goto语句跳转除外),所以如果不在if语句后加一条exit(结束命令),则批处理在判断当前日期非指定的禁止运行QQ的日期后,运行QQ,但其后仍会顺序执行到显示“今天不准用QQ聊天”的语句。而在else后用跳转语句直接执行err标签后的语句,则没有经过exit,自然不受其影响。

小提示
★goto语句跳转到的标号位置可以用“:标签名”来定义。
★pause语句是为了能够让用户看清echo提示的内容,否则执行批处理显示完内容后直接程序关闭,一闪而过的命令行窗口根本不可能看到诸如“今天不准用QQ聊天”等的提示,而在使用pause语句后可以在用户键入任意键前保持命令行窗口暂停以便查看提示信息。

名师烹饪:记录QQ的使用情况
适宜人群:熟练掌握批处理的高级用户
到底谁在用我的QQ?如果有一个批处理可以记录下运行QQ时的当前系统登录用户,及运行的日期和时间……
同样将以下脚本保存为runqq.bat,放置在QQ安装目录下,并按照上文中的方法将其桌面上的快捷方式指向此文件。
@echo off
echo ——————– >> “log.txt”
echo QQ运行日期=%DATE% >> “log.txt”
echo QQ运行时间=%TIME% >> “log.txt”
start /w regedit /e reg.txt HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer
type reg.txt | find “Logon User Name” >> “log.txt”
del reg.txt > nul
qq.exe

此脚本如在Windows 98下使用,应去掉“%DATE%”和“%TIME%”这两行,改为下面的方式(仅支持记录用户名,不记录日期和时间)。
@echo off
echo ——————– >> “log.txt”
start /w regedit /e .reg HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control
type reg.txt | find “Current User” >> “log.txt”
del reg.txt >> nul
以后每次有人双击快捷方式运行QQ时,都会自动记录下该用户的系统登录名、运行日期和时间,当我们要查看QQ的使用情况时,只需用“记事本”打开QQ安装目录下的log.txt即可,记录的格式如图6所示(插入图6)。其中[HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Logon User Name]键值记录了当前系统中登录的用户名。

掌柜的有话说
1.DOS在哪儿
Windows 98:点击“开始→运行”,输入“command”(不含引号)回车。
Windows 2000/XP/2003:点击“开始→运行”,输入“cmd”(不含引号)回车。
2.调试脚本有学问
在脚本调试阶段,应将脚本中的“@echo off”改为“@echo on”以便打开回显,这样如果脚本在运行中出现了问题,我们就能直观地从反馈信息中找出问题所在。
3.%和%%的区别
%和%%都是变量前缀,在命令行方式下使用变量则输入“%”,而在批处理脚本中引用到变量时,则应采用“%%”。
*特别感谢热心读者“大鱼一条”对本栏目的帮助与支持!

小提示
★在脚本中使用“>>”追加重定向操作符而不是使用“>”重定向操作符,区别在于“>>”是在文件尾部添加信息,而“>”则是清空文件内容再写入信息,对于需要记录每次QQ使用情况的脚本文件当然不能清空前一次的记录。

Just do it
将脚本稍加修改,使其记录其他程序的使用情况。

DIY你的DOS菜
上期答案:
1.删除d:\\test目录下所有的隐藏文件,要求删除每个文件时都提示确认。
del /p d:\\*.* /ah
2.删除d:\\test目录,包括其下所有的子目录及文件。
rd d:\\test /s
3.在第2题的基础上,采用“安静模式”。
rd d:\\test /s/q
本期习题:
1.将当前日期和时间分两行存为c:\\now.txt。
2.制作一个脚本,修改系统时间为16:30:00,运行c:\\abc.exe,接着用网络时间同步命令将时间改回来。
3.将本期“名师烹饪”中的脚本稍加修改,使其能够记录MSN Messenger使用情况。

 

转自cfan,感谢PK分享经验

评论被关闭。