Windows 2003 老树新花说DOS阶段教学 指引
命令:Defrag
命令:Freedisk
命令:Rmdir?rd
命令:Expand
命令:Forfiles
命令:Inuse
命令:Recover
命令:Tasklist
命令:Taskkill
使用实战
老树新花说DOS
中国电脑教育报 李学昌
Windows 95发布之前,PC机的操作系统是DOS的天下。时至今日,Windows已升级至Windows 2003,DOS这个辉煌一时的操作系统早已被大多数人遗忘。但实际上,DOS在系统维护及安装过程中仍然有着特殊的作用,DOS命令也在随着Windows的升级而加强,比如Windows 2003中新增的命令提示符工具就达60多个!这些新增加的DOS命令在实现特定功能时,往往比Windows操作更简洁、更有效!为了让读者朋友能全面地了解这些强大的DOS命令及其用法, 特意为大家组织了DOS系列实战专题,希望大家能从中有所收益。
提示:在Windows 2000/XP/2003中单击“开始→帮助和支持”,在“搜索”后输入“新命令行工具”,即可看到各个版本新增的命令行工具,双击任意一个命令可以看到它的具体用法及举例说明。在命令提示符下,输入不带任何参数的命令或在命令后加上参数“/?”也可查阅到该命令的使用说明。这两种方法得到的帮助信息不尽相同,可以相互补充。
当然,在屏幕上看远不如打印输出后再看的效果好,如果要打印输出,可采用以下办法:
1. 在命令提示符窗口右击,选择“标志”,然后你就可以像在文本编辑器中那样选中内容,选中后的内容由原来的黑底白字变为白底黑字,再按一下回车键或单击一下鼠标左键,选中的内容便会自动复制到系统剪贴板。
2. 利用Windows 2003下的新命令行工具Clip也可完成以上任务。比如:输入“dir/﹖ | clip”可将有关dir命令的用法复制到系统剪贴板。
命令:Defrag
功能:磁盘碎片整理
语法:defrag Volume [/a] [/v][/f]
参数:[/a]参数只分析当前磁盘并提示是否应该对该盘进行磁盘碎片整理[/v]参数可以详述分析结果。Volume指盘符,如“C:”。
实战:在Windows下整理磁盘碎片时,如果磁盘的空闲空间少总空间的15%,程序将不能进行,如果加上参数/f(提示:在2003下也可用 “-” 代替原来的“/”),可以强制进行磁盘碎片整理。
命令:Freedisk
功能:在继续运行下一个程序之前检查是否存在指定数量的可用磁盘空间。
语法:freedisk [/s Computer [/u [Domain]User [/p [Password]]]] [/d Drive] [Value]
参数:“/d Drive”指定要查询磁盘空间可用性的驱动器;“Value”检查是否存在指定数量的可用磁盘空间,可以用字节、KB、MB、GB、TB等为单位。
对于无人值守安装,可以在批处理文件安装中使用 freedisk 命令,以便在继续安装之前检查可用磁盘空间。
在批处理文件中使用 freedisk 命令时,如果存在足够的空间,那么该命令返回 0,否则返回 1。我们可以利用这个返回值去控制后面程序的运行。
① 假设我们要确定驱动器 C上是否存在至少 5GB 的可用空间,在命令提示符下键入“freedisk /d c: 5GB”后回车即可验证可用空间是否足够。
② 利用该命令,我们可以为自己设计的软件加入空间检查功能。假设设计的软件主执行程序,程序名是为Mysoftware.exe,默认安装在D盘上,需要空间为500MB。现在打开记事本,输入以下内容:
freedisk /d d:500mb
if not errorlevel 1 goto install
echo The space is not enough to install this software
goto end
:install
Start mysoftware
goto end
:end
然后单击“程序→另存为”,在“保存类型”后选择“所有文件”,在“文件名”后输入“X.bat”(X代表任意文件名,比如我们可以设置为Setup.bat),这样一个名为X.bat的批处理文件就建好了。运行(双击之即可)它后会有什么效果呢?如果D盘的剩余空间多于500MB,安装程序就会自动运行,否则提示“The space is not enough to install this software”,安装程序自动退出。
命令:Rmdir?rd?
功能?删除目录。Windows 2003中的Deltree命令已被Rd命令取代。
参数:在Windows 2003下,加上参数“/s”后可以删除指定目录和所有子目录以及包含的所有文件;加上参数“/q”后能在安静模式中运行(即删除目录前用不确认,但不能删除包含隐藏或系统文件的目录)。
实例:我们以修改注册表为例,说明怎样在电脑启动时自动清除Temp目录下的文件。
①新建一个名为Deltemp.bat的批处理程序,程序中包含的命令行是:
rd c:windows emp /s/q
md c:windows emp
将这个批处理文件保存在C:盘根目录下。
②打开注册表编辑器,依次展开[HKEY_CURRENT_USER
SoftwareMicrosoftWindows NTCurrentVersionWindows ]分支,在右侧窗口中右击(如果没有,请新建一个)“load”项目,选择“修改”,在打开窗口中的“数值数据”下面输入“d:deltemp.bat”,然后退出注册表编辑器即可。
命令:Expand
功能: 展开一个或多个压缩文件。该命令用于从安装盘中检索压缩文件,修复部分系统文件。
语法: Expand source [/F:files] [destination] [/d] [/y]
参数: source——指定要展开的文件。source 可由驱动器号和冒号、目录名、文件名或组合所组成。不能使用通配符。
/f:files——如果源文件包含多个文件,指定要提取的文件的名称,可以对要提取的文件使用通配符。
Destination——指定提取文件或每个单独文件的目标目录和(或)文件名。
/d——列出 CAB 文件中包含的文件而不展开或提取。
/y——在展开或提取文件时不出现覆盖提示。
实例:从安装光盘(假设为D盘)的驱动程序CAB文件中提取 Msgame.sys 文件并将其复制到 C:WindowsSystemDrivers下。
expand d:i386driver.cab :msgame.sys c:windowssystemdrivers
命令:Forfiles
功能:从文件夹或文件树中选择要进行批处理的文件,也就是说,它能将搜索到的文件作为参数传递给后面的DOS命令,从而对搜索到的文件进行改名、删除、复制等操作。与DOS下的“For…In…Do”作用类似,但功能更强大。
语法:forfiles [/p Path] [/m SearchMask] [/s] [/c Command] [/d[{+ | -}]
[{MM/DD/YYYY | DD}]]
参数:/p Path——指定搜索路径,表明要从哪里开始搜索,默认的文件夹是当前工作目录;
/m SearchMask——按照 SearchMask设置的文件名参数搜索文件。默认的 SearchMask 是?.?,即所有文件,可使用通配符(?和?)。比如:?.exe表示搜索所有扩展名是.exe的文件、e??.?表示搜索首字符是e、主文件名只有3个字符的所有文件;
/s——在所有的子目录中进行搜索;
/c Command——对搜索到的每个文件上实施指定的命令。带有空格的命令字符串必须用引号括起来。默认的命令是“'cmd /c echo @file'”,即显示全称文件名,包括路径、主文件名、扩展名等;
/d[{+ | -}] [{MM/DD/YYYY | DD}]——选择日期大于或等于 (+)或者小于或等于 (-)指定日期的文件。
实例:①清除D盘下的所有扩展名是.tmp的文件,请键入以下命令:
forfiles /p d: /m ?.tmp /s /c 'cmd /c del @file'
②将D盘下的所有扩展名是.jpg的文件扩展名改为.gg:
forfiles /p d: /m ?.jpg /s /c 'cmd /c ren @file ?.gg '
③只查找并显示盘目录:
forfiles /p c: /s /m ?.? /c 'cmd /c if @isdir==true echo @file is a directory'
该命令行可以将C盘下的所有目录查找出来,并显示为类似“XXXX is a directory”的格式。
功能:替换被锁定的操作系统文件,要使替换有效必须重新启动电脑。
语法:Inuse Replacement Destination [/y]
参数:
Replacement——指定已更新的文件名,包括完整的路径;
Destination——指定希望替换的且位于本地驱动器上的当前已锁定的文件,必须包括完整的物理路径名称;
/y——取消当 Inuse 尝试替换该文件时将出现的确认提示。
说明:
必须用管理员组成员的身份登录才能使用该工具。重新启动计算机后,操作系统将在运行磁盘检测工具之后进行文件替换。新文件(Replacement)和旧文件(Destination)只能是单个文件,不能使用通配符。
实例:
①使用已更新的远程文件替换现有的本地文件,请键入:
inuse srvmainwindows est.dll e:windows est.dll
②如果要一次替换多个文件,可使用批处理命令,比如一次要替换三个文件:
@echo off
inuse g:i386 est.dll c:windowssystem32 est.dll /y
inuse g:i386 est2.dll c:windowssystem32 est2.dll /y
inuse g:i386 est3.dll c:windowssystem32 est3.dll /y
shutdown /l /r /y
其中,“shutdown /l /r /y”的作用是在无需用户干预的情况下注销当前用户并重新启动电脑。
命令:Recover
功能:从损坏的磁盘中恢复可读取的信息。
语法:recover [Drive:][Path] FileName
参数:直接指要恢复的文件的位置和名称即可,不能使用通配符(* 和 ?),必须指定具体的文件名。如果要快速恢复多个文件,可使用批处理命令来解决。
实例:要恢复D:Fiction 中的文件 Story.txt文件,请键入:
recover d: ictionstory.txt
命令:Tasklist
功能:显示本地或远程机器上当前运行的进程列表。查看到打开的进程后,就能配合Taskkill命令来结束本地或远程电脑上的进程。
语法:Tasklist[.exe] [/s Computer] [/u DomainUser [/p Password]] [{/m Module | /svc | /v}] [/fo {TABLE | LIST | CSV}] [/nh] [/fi FilterName [/fi FilterName2 [ ... ]]]
参数:
/s Computer——指定远程计算机名称或 IP 地址(不能使用反斜杠,其实它相当于指明路径)。默认值是本地计算机;
/u DomainUser——以 User 或 DomainUser 指定的用户账户权限运行命令。默认值是当前登录发布命令的计算机用户具有的权限。其中Domain表示工作组,User表示用户名;
/p Password——指定 /u 参数中指定用户账户的密码;
/m Module——列出与给定模式名称匹配的加载了 DLL 模块的所有任务。如果未指定模块名称,该选项将显示每个任务加载的所有模块;
/svc——不间断地列出每个过程的所有服务信息;
/v:指定显示在输出结果中的详细任务信息。要在没有截断的情况下查看完整的详细输出,请与 /svc 参数一同使用;
命令:Taskkill
功能:结束一个或多个任务或进程。可以根据进程 ID 号或进程名来结束进程。
语法:Taskkill [/s Computer] [/u DomainUserName [/p Password]] {/fi FilterName [{/pid ProcessID | /im ImageName}] | /pid ProcessID | /im ImageName} [/f] [/t]
参数:/s、/u、/p的意义与 tasklist相同。
/fi FilterName——指定将要终止或不终止的进程的类型;
/pid ProcessID——指定将终止的进程的ID号;
/im ImageName——指定将终止的进程名称,可使用通配符 (?和?);
/f——指定将强制终止的进程。对于远程进程可忽略此参数,所有远程进程都将被强制终止。
实例:
Taskkill /s jsj4 /f /im notepad.exe
强行终止远程计算机jsj4上已打开的记事本程序。
在本系列前面的7期文章中,我们掌握了一些Windows 2003中新增加的DOS命令的使用方法。在接下来的两期,我们就通过一些实例看看这些DOS命令的综合运用。在本期中,我们来看看如果让一个程序随另一个程序的启动而启动。一个典型的应用是:让杀毒软件随着网络连接打开而自动运行,关闭网络连接时,杀毒软件自动退出。随时关闭网络连接还有节省网费、免遭攻击的好处。实现方法如下:
步骤1 确定相程序的位置
默认情况下,网络连接软件PPPoEWin.exe和江民杀毒软件KvXP.kxp(它的扩展名虽不是.exe或.com,但还是能运行)分别位于 C:Windowssystem32和C:KV2004下。如果你采用拨号上网,启动它的程序是rasphone,位于C:Windowssystem32下。
步骤2 建立批处理文件
假设批处理文件名为“myPPPoE.bat”,批处理中包含以下命令行:
@echo off
Start c:windowssystem32PPPoEWin
Start C:KV2004KvXP.kxp
以后,只要运行这个批处理,网络连接程序打开的同时,江民杀毒软件就会自动打开。
注意:
①KvXP.kxp必须要加上扩展名才能运行,因为它不具有DOS下的可执行文件的扩展名。
②如果想让KvXP.kxp随IE启动而运行,只修改上述程序的第2行是不行的,因为Iexplore.exe在C:Program FilesInte.net Explorer目录下,路径中有空格,批处理执行时会报找不到Iexplore.exe的错误,可将批处理修改为:
@echo off
Path %path%;C:Program FilesInternet Explorer
Start Iexplore.exe
Start C:KV2004KvXP.kxp
提示:我们还可以让网络连接与杀毒软件同时退出。只需创建一个批处理文件,包含以下内容即可:
Start taskkill /f /im KvXP.kxp
Start taskkill /f /im PPPoEWin.exe