DOS快餐店(七)
黑底白字的计划书
■掌柜的
√attrib和at命令的使用
√利用脚本隐藏指定类型文件
经过各大IT媒体对“企业管理信息化”概念的疯狂炒作,掌柜的也着实被“熏陶”了一把,一时兴起购入一台小型服务器放在店堂中,所有的菜谱、账目记录及反馈意见等都放在服务器上。账目无纸化操作固然好,可是对病毒感染技术颇有经验(其实就是经常中病毒)的掌柜深知数据备份的重要性,于是每天00:00打烊后,备份服务器又成了掌柜的“必修课”。
几天后……掌柜的终于无法忍受每天的备份了,于是他又把这活交给了小伙计,并嘱咐必须在每天的00:00进行备份。小伙子哪里肯在下班后再多留哪怕一分钟,于是,他登录服务器后键入了一条命令:
at 00:00 cmd /c copy C:\\Documents\\*.* C:\\MyDocs
说明:其中“C:\\Documents\\*.*”为要备份的源目录,而“C:\\MyDocs”则为备份的目标目录,可根据实际备份需要进行修改。由于“copy”命令为内部命令,即由cmd解释执行而非单独的应用程序,所以在指定copy任务时要先使用“cmd /c”打开命令提示符,参数/c表示执行完命令后终断(关闭)。

本期配料:attrib/at 适宜人群:没有DOS基础的初学者
1.attrib
文件属性在Windows时代渐渐被人们遗忘。“存档”、“系统”、“隐藏”、“只读”,你是否知道它们的含义?在“我的电脑”中任意右击一个文件,选择“属性”后可以看到“只读”和“隐藏”(见图1)。
存档:有些程序根据这个属性决定是否备份该文件,此属性在Windows XP中已经不提供图形界面下的修改了。
系统:操作系统相关的文件,对操作系统不熟悉的用户应尽量避免修改具有系统文件属性的文件。
只读:文件只允许读取,不允许写入。
隐藏:这个文件属性大家都很熟悉,具有此属性的文件只能通过勾选“文件夹选项”中的“显示所有文件和文件夹”或使用“dir /ah”命令来查看。
目标1:查看D:\\a.txt的文件属性
attrib d:\\a.txt
命令格式:attrib 文件名/目录名
命令讲解:在attrib后只加文件名/目录名参数就代表查看该文件/目录的属性(见图2)。如果指定文件/目录在当前目录下,则直接在命令中使用文件名/目录名,如果在其他目录下,必须给出完整路径。
目标2:将D:\\a.txt设置为“只读”属性
attrib +r d:\\a.txt
命令格式:attrib +属性 文件名/目录名
命令讲解:上面的命令格式中用到的“属性”就是刚才所说的4种文件属性,“r”为“只读”、“a”为“存档”、“s”为“系统”、“h”为“隐藏”。
“+”起到了给文件/目录设置属性的作用,那么如果要清除文件/目录的属性,我们该用什么呢?
目标3:清除D:\\a.txt的“隐藏”属性
attrib -h d:\\a.txt
命令格式:attrib -属性 文件名/目录名
命令讲解:可能你已经猜到了,清除文件属性的符号是“-”,命令中用到的“属性”与目标1中添加属性时给出的相同。学会了设置和清除文件属性,你可能会问:设置和清除可以同时进行吗?当然可以,比如在给d:\\a.txt设置“隐藏”属性的同时清除“只读”属性,就可以用如下命令:
attrib +h -r d:\\a.txt
和很多其他命令一样,attrib也支持批量文件处理,但如果要对一个文件夹下的所有文件进行属性操作,就必须使用附加参数。
目标4:将D:\\movie及其子目录下的所有RMVB文件设置为“隐藏”属性
attrib +h d:\\movie\\*.rmvb /s
命令格式:attrib ±属性 批量文件名 /s
命令讲解:当在文件名参数中使用“*”、“?”等通配符时,即可对指定目录中的相应文件进行批量的属性操作。如果进行操作的目录下仍有子目录,并且子目录中包含了符合命令中文件名参数的文件时,默认是不进行处理的。指定了/s参数后,attrib命令就会在处理指定目录文件的同时对该目录下所有子目录内符合文件名参数的文件进行属性操作。
在批量操作的同时是否可以同时对子目录进行属性操作呢?
目标5:将D:\\movie及其下的所有子目录、文件设置为“隐藏”属性
attrib +h d:\\movie /s /d
命令格式:attrib ±属性 批量文件名 /s /d
命令讲解:参数/d必须在批量设置文件属性的同时,对指定目录及其下所有子目录进行文件属性操作。参数/d可以理解为“directory”(目录)。那么,“attrib +h d:\\movie /s /d”和“attrib +h d:\\movie\\*.* /s /d”有什么区别呢?两者都将d:\\movie下的所有文件及子目录设置了“隐藏”属性,但前者由于指定的参数是目录,所以d:\\movie也设为了“隐藏”;而后者则没有设置d:\\movie的“隐藏”属性。

2.at
很多朋友都使用过“计划任务”功能,在命令行方式下,应该如何编写黑底白字的“计划书”呢?请出今天要介绍的第二个命令:at。
目标1:在今天的16:30运行calc.exe(Windows自带的“计算器”)
at 16:00 calc.exe
命令格式:at 时间 要在指定时间运行的程序名/批处理文件名
命令讲解:at命令最简单的应用便是其后直接给出计划的时间及该时间要运行的程序名,其中要运行的程序如果不在系统目录或者系统环境变量所指向的目录中,则要给出完整路径。在添加了新任务后,可以通过运行“at”命令查看已经添加的任务(见图3)。
你可能会注意到用“at”命令所列出的计划任务列表中有一个ID列,其中以数字顺序为已经添加至列表中的任务分别标注了一个惟一的任务ID,这个ID有什么用呢?
目标2:删除ID为2的计划任务
at 2 /delete
命令格式:at 要删除任务的ID /delete
命令讲解:要删除某个任务时,可以先使用“at”来查看当前已经添加的任务列表,然后根据任务列表中该任务的ID配合/delete参数加以删除即可。经测试,在Windows XP中/delete参数可简写为/del。如果你希望将所有的计划任务一次删除干净,可以使用如下命令:
at /delete
不加任务ID而单独使用/delete,at命令就会删除计划任务列表中的所有任务。有很多时候我们并不希望在进行任务删除操作时需要确认,可是at命令默认在进行任务删除操作时都会提示键入Y/N后方可继续(见图4),尤其是编写批处理时这样会很不方便。和以前介绍的很多命令一样,at命令也有自己的无确认参数。
目标3:删除ID为2的计划任务,无需确认
at 2 /delete /yes
命令格式:at [要删除任务的ID] /delete /yes
命令讲解:在使用/delete参数的同时配合/yes参数,at命令在进行计划任务删除操作时就不再需要确认。“命令格式”中将“要删除任务的ID”两侧加上“[]”,是指此时ID参数可有可无,如“at /delete /yes”就是无确认删除所有计划任务。
如果刚才在“目标1”时做了试验,你可能会惊奇地发现在指定时间并没有运行“计算器”。是真的没有运行吗?打开“任务管理器”,“calc.exe”却赫然显现在眼前。这就是at命令与控制面板中的“任务计划”的区别,图形界面的“任务计划”所计划的任务都是前台方式运行的,而at命令所计划的任务默认状态都是后台方式(看不见运行界面)运行的。如何让at命令计划的任务在前台运行(显示出运行界面)呢?
目标4:在今天的16:30以前台方式运行calc.exe
at 16:30 /interactive calc.exe
命令格式:at 时间 /interactive 要在指定时间运行的程序名/批处理文件名
命令讲解:参数/interactive代表的是“交互”的意思,该参数就是允许作业(计划好的任务)在运行时,与当时登录的用户桌面进行交互,简而言之就是能看见运行界面。
在图形界面中还能够在每月、每星期的指定日期运行任务,用at命令该怎么做呢?
目标5:在每月16日的16:30运行c:\\run.bat
at 16:30 /every:16 c:\\run.bat
命令格式:at 时间 /every:日期 要在指定时间运行的程序名/批处理文件名
命令讲解:参数/every:后指定的“日期”可以是“16”(每月16日)等数字形式的,也可以是“星期四”(每周四)等文字形式的。如果是指定星期几,在Windows XP中可以将“星期四”省略为“四”。如果本月(星期)不想执行,而希望在下次指定日期到来时(如下个月16日)运行任务,则可将“every”改为“next”,命令如下:
at 16:30 /next:16 c:\\run.bat
如果“every:”或“next:”后没有指定日期,如“at 16:30 /every: c:\\run.bat”,at命令就会默认将本日作为计划任务执行的日期,如在21日执行了该命令,则计划在每月21日执行指定程序。at命令还有一个“\\computername”远程计算机参数,可以在远程计算机上进行计划任务操作,但需要先以对方机器的管理员账号登录才行,在此处不做介绍。

at命令与“任务计划”的详细区别
在命令行方式下使用的at命令主要用于计算机管理用途的计划任务操作,而“控制面板”中的“任务计划”则主要用于普通用户使用。主要的区别有以下几点,在使用时务必注意:
1.at命令指定的任务默认在后台运行,而“任务计划”则在前台。
2.用“at”只能列出由at命令添加的计划任务,而在“任务计划”中则都可以查看自身及at所添加的计划任务,在图形界面的“任务计划”中对at命令添加的计划任务进行编辑后,在命令行方式下就不不能以at命令进行查看和操作了。
3.在系统服务中的“task scheduler”服务是at命令和“任务计划”使用的基础,如将该服务停用并设置为手动,则“任务计划”在运行时会自动将该服务启动,而at命令则会运行失败。如将该服务禁用,则两者都无法正常使用。

本期大餐:以at命令完成各种任务
★在指定时间将某个目录下指定类型的文件设置为隐藏文件
@echo off
at %1 cmd /c attrib +h %2\\*.%3 /s
将上面的代码保存为timeab.bat,该脚本的使用方法为“timeab.bat 时间 要处理的目录 文件扩展名”,如要在13:00将D:\\games目录下的所有EXE文件设为隐藏,可以使用“timeab.bat 13:00 d:\\games exe”。
★在指定时间关机
at 时间 shutdown.exe -s -t 0 -f
其中“-s”参数是确定为关机操作,而“-t 0”则代表0秒后关机,“-f”表示强制关机,可以解决部分因程序尚未关闭而导致无法关闭的情况。

DIY你的DOS菜
上期答案:
1.将D:\\movies\\new.rm重命为old.rmvb。
ren d:\\movies\\new.rm old.rmvb
2.用D:\\abc\\1.exe替换D:\\def目录及其子目录下的所有同名文件,要求操作确认。
replace d:\\abc\\1.exe d:\\def /p /s
3.在第2题的基础上,只替换旧文件。
replace d:\\abc\\1.exe d:\\def /p /s /u
本期习题:
1.为D:\\music\\1.mp3添加“只读”属性,同时清除“隐藏”属性。
2.将D:\\music目录下所有文件及子目录设置为“隐藏”,但不包括D:\\music目录本身。
3.在每月20日的12:00以前台方式运行d:\\test.exe。

 

转自cfan,感谢PK分享经验

评论被关闭。