Windows 命令行基础原始 HTML 档案请到 http://sites.google.com/site/ghenix/ 下载。 目录1. 引言:为什么要使用命令行 2. 文件系统基础 2.1 分区与盘符 2.2 文件与名称 2.3 文件的目录管理 2.4 绝对路径和相对路径 3. 基本命令 3.1 目录操作命令 3.2 文件操作命令 3.3 通配符 3.4 命令输入技巧 4. 一些较高级的概念 4.1 输入输出重定向和管道 4.2 特殊设备 4.3 环境变量 5. 批处理文件简介 6. 几个应用实例 6.1 批量改名 6.2 批量“粉碎”文件 6.3 清理 Windows 临时文件夹 %tmp% 6.4 优化服务配置:svc2kxp.cmd 6.5 下载一系列图片:for + wget 7. 参考文献 附录1:常用 DOS 命令一览 附录2:Windows 中的一些有用的命令 附录3:相关资源 1. 引言:为什么要使用命令行在 DOS 时代,人们只能依靠输入命令同计算机互交。而现在,微软的 Windows 操作系统已得到了广泛使用,我们处理日常事务也大多使用基于图形用户界面(GUI ,Graphics User Interface)的应用程序,命令行正在逐渐被人们淡忘。但我们同时也看到,系统自带的命令行解释器从 Windows 98 的 command.com 变成 Windows XP 的 cmd.exe ,功能大大增强了。 命令行有它独特的价值,在某些方面的表现是 GUI 程序无法获得的,下面举例来说: 1. Windows 系统有时会出现故障,或是中了病毒、木马,系统根本无法引导。而整个 DOS 操作系统可装入一张软盘,只要用一张启动盘就可进入 DOS ,从而进行备份数据、修复系统等工作。如果你不会 DOS 命令,修复系统便无从谈起。当然,还有一些别的修复工具,比如 WinPE 、故障恢复控制台等,也能用来修复系统。但 DOS 启动盘具有制作简单、体积小等优点。在 DOS 中使用的命令请参考附录1。 2. Windows 命令行中提供了一系列实用小工具,极为绿色。比如 ping、netstat、diskpart 等命令。这方面可参考“附录2”。 3. 学习 Windows 命令行,有助于我们更深入地了解 Windows 的工作方式。 4. 很多软件既有图形前端,又有命令行版可供选择。如 7-Zip、WinRAR(两者都是压缩软件)皆有命令行版,微软的 cabarc(用来制作 CAB 压缩包)也是命令行程序。使用命令行版的软件通常具有占用资源少、运行速度快、可通过脚本进行批量处理等优点。 当然,命令行也有其缺点。比如界面不够美观,手工输入命令较为繁琐(这可以通过一些输入技巧来弥补,详见 3.4 节),学习起来较为困难等。 本文涵盖了 Windows 命令行的各方面的内容,从最简单的文件名命名规范到编写脚本文件,主要是基础知识。本文主要是为那些 Windows 命令行新手而写的,对读者的技术水平或使用计算机的经历不做任何要求。 不同的 Windows 在命令行处理上也有细微差异,我用的系统是 Windows XP Home SP2 ,后面一些命令的运行结果也是基于此。 2. 文件系统基础计算机内各种信息,如程序、数据等都是以文件形式存在的,使用计算机,可以说是对各种文件的操作管理。文件系统是 Windows 的一个组件,它能够让用户查看、组织以及保护存储设备上的文件和目录并与其进行互交。在“我的电脑”中选中任一本地磁盘,单击右键 -> “属性”,在弹出的“属性”对话框中可看到该磁盘(分区)的文件系统。 Windows 中常见的文件系统有 FAT 、FAT32 、NTFS 、CDFS ,其中 CDFS 用于 CD-ROM ,其他用于磁盘。本文并不讨论文件系统的详细情况,欲了解请上网查找。 值得注意的是,Windows XP 是不区分大小写、但又保留大小写的操作系统。 2.1 分区与盘符文件系统是多个文件的逻辑集合,它位于分区或磁盘上。分区是信息的容器,如果需要的话,它也可以包含整个物理硬盘。例如,可以整个吃掉一个苹果 派,也可以切成片,这类似于对硬盘或其他物理存储设备的操作方式。一片苹果派类似于磁盘的一个分区,而完整的苹果派表示将整个硬盘作为一个分区。当然还有 更高级的含义,但是就本章而言,只是把整个硬盘或硬盘的系统划分看作分区。我们平时说的C:、D: 等即指磁盘分区,这些磁盘分区可能位于同一块物理硬盘上,也可能位于不同的两块硬盘。C:、D: 等称为盘符或驱动器号,只是系统的一种表示符号,可以更改或重新分配。一个分区通常只包含一个文件系统。 2.2 文件与名称文件名称由文件名和扩展名组成,两者由小黑点分隔,扩展名通常是用来表示文件的类别。Windows 中整个文件名称最长 255 个字符(一个中文字算两个字符);DOS 中,文件名最长 8 字符,扩展名最长 3 字符,故又称 DOS 8.3 命名规则。文件名称可仅有前半部,即无扩展名,如文件名称最短可以是“1”、“C”等。给文件命名还应注意以下规则: 1. 文件名不能包含下列任何字符之一(共 9 个):\/:*?"<>|。 你也许会发现很多文件没有扩展名,其实不然。这是因为 Windows 在默认情况下会隐藏大部分文件的扩展名。如果希望显示所有文件的扩展名的话,打开“我的电脑”,“工具”菜单 -> “文件夹选项”,再在“查看”选项卡中,去掉“隐藏已知文件类型的扩展名”。另外,Windows 是根据文件的扩展名来决定对文件的操作的,而不是根据内容。例如,把一个文本文件(txt)的扩展名改为“RM”,再双击它,Windows 就会调用某个安装在你电脑上的媒体播放器(如 RealPlayer)来打开它。 2.3 文件的目录管理把大量文件全放在一个目录里,操作系统查找一个给定的文件时就要花较长时间,同时,删除时也易误删除,对用户来说极不方便。于是,操作系统采用 了目录的分级管理。将一个用户的同一类文件放在某个单独的目录下,和磁盘上所有其他文件分开来,这样的目录文件使用和管理起来要方便和科学得多。 ![]()
除根目录外的所有子目录都有个名字,命名规则同文件,一般没有扩展名。 2.4 绝对路径和相对路径当我们建立或修改一个文件时,必须向 Windows 指明这个文件的位置,这须知道三件事:驱动器、文件所在目录和文件名,这些信息构成一个路径。 路径是由一系列目录名组成的,这些目录名之间用“\”分开,也可以把文件名(文件名和最后一个目录也用“\”分开)和驱动器号包括在内。例如:C:\WINDOWS\explorer.exe 。 每个文件都有一个绝对路径和一个相对路径。绝对路径是指文件在文件系统中的准确位置,如 C:\WINDOWS\notepad.exe 。命令行解释器可以记住一个指定的目录,称为当前目录,相对路径即指文件相对于当前目录的位置。例如,如果用户在 C:\WINDOWS 目录下,则 C:\WINDOWS\notepad.exe 的相对路径是 notepad.exe 。这类似于家庭住址。如果是将自己的地址告诉住在同一座城市的人,可能会说自己住在某条街过去两条街。这就是相对地址——相对于同一座城市。如果是将自己 的地址告诉其他国家的某个人,就必须说得更加详细,如中国某个省某个市中的某条街某号以及邮政编码,这就是绝对地址。相对路径常用于脚本,且使输入更简 便,但是绝对路径是一个更为安全的选择,因为它避免了可能出现的歧义。 如果一个路径是用“\”开始的,Windows 就从根目录开始找起(绝对路径),否则就从当前目录开始找(相对路径)。 例如,在上图中,若当前目录为 a12 ,要指示子目录 a122 下的文件 ms.txt ,可以用路径 \a1\a12\a122\ms.txt(绝对路径) 或 a122\ms.txt(相对路径)。 在“我的电脑”中,“地址栏”显示的就是当前目录。如果你看不到地址栏,请找到“查看”菜单 -> “工具栏”,勾选“地址栏”。如果你的地址栏没有显示完整路径(绝对路径),请单击“工具”菜单 -> “文件夹选项”,再在“查看”选项卡中,选中“在地址栏中显示完整路径”。 3. 基本命令本章将具体地介绍一些命令。你最好能实践一下本章的内容,这需要使用 Windows 的“命令行解释器”,该程序在 Windows XP 中是 C:\WINDOWS\system32\cmd.exe 。请打开“开始” -> “程序” -> “附件” -> “命令行提示符”。然后,新窗口中可能会显示以下内容: Microsoft Windows XP [版本 5.1.2600] (C) 版权所有 1985-2001 Microsoft Corp. C:\Documents and Settings\%USERNAME%>_ 其中“%USERNAME%”代表您当前的用户名。这里“>”提示符之前显示的就是当前目录。 * 注意以下几点: 1. Windows 中有两种命令:内部命令和外部命令。内部命令即内置在命令行解释器中的命令,不需要额外的程序,如 dir 、copy 等。外部命令是以可执行文件的形式(扩展名通常为 exe 或 com)存在于磁盘上,这就意味着该程序必须存在,否则 Windows 是找不到该命令的,如 format.com 。 2. 每条命令输完后须回车,方开始运行,并得到运行结果。命令行解释器把提示符“>”和回车键间的字符串视为一条命令。如果这字符串确实符合 Windows 命令语法,就执行它,执行完后又回到提示符状态,否则命令行解释器给出错误信息。例如: Microsoft Windows XP [版本 5.1.2600] (C) 版权所有 1985-2001 Microsoft Corp. C:\Documents and Settings\root>cd "C:\Program Files"(此处回车,以后不标出) C:\Program Files>_ C:\Program Files>gf 'gf' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 C:\Program Files>type a.txt 系统找不到指定的文件。 C:\Program Files>_ 3. 要学习某个命令,最好的方法是阅读该命令的联机帮助。可以输入“命令名 /?”或“help 命令名”来查看命令的联机帮助,例如“format /?”。本章对命令的解说仅限于最基本的用法,欲详细了解请看联机帮助。 3.1 目录操作命令1. cd :Change Directory :改变当前目录 C:\>cd \a1\a12\a122 (进入 a122 子目录,即指定 a122 为当前目录) C:\a1\a12\a122>cd \ (退回根目录) C:\>_ 2. 多级目录之间的转换 C:\a1\a12\a122>cd \c1\c13 C:\c1\c13>_ 2) 由根目录进入深层子目录 C:\>cd \a1\a12\a122 C:\a1\a12\a122>_ b. 逐层进入: C:\>cd a1 C:\a1>cd a12 C:\a1\a12>cd a122 C:\a1\a12\a122>_ 3) 退出深层子目录 C:\a1\a12\a122>cd \ C:\>_ b. 逐级退出子目录: C:\a1\a12\a122>cd .. C:\a1\a12>cd .. C:\a1>cd .. C:\>_ 4) 进入同级子目录,如从 C:\a1\a12 转至 C:\a1\a11 : C:\a1\a12>cd ..\a11 C:\a1\a11>_ 以上实例中用到了“..”,这用来表示当前目录的上级目录(父目录)。类似地,一个点“.”表示当前目录。 另外,直接用 cd 不能切换到其他盘符,要切换到其他盘,可以用 cd /D 或者用“盘符:”,比如 D: 再回车就表示切换到 D 盘。 3. md :Make Directory :建立子目录 C:\a1\a12>md a123 (在当前目录下建立子目录 a123) C:\a1\a12>md \d1 (在 C 盘根目录下建立子目录 d1) 4. rd :Remove Directory :删除子目录 C:\c1>rd c13 (删除当前目录下的 c13 子目录) C:\c1>rd ..\b1 (删除根目录下的 b1 子目录) 说明:1) 只有空子目录(不含文件的)才能被删除(除非用 /S 参数)。 3.2 文件操作命令1. dir :列文件目录清单 C:\>dir (显示当前目录下文件目录清单) C:\>dir E:\bin /p (分页显示 E 盘上 bin 目录下文件目录清单) C:\WINDOWS\system32>dir p*.vbs (显示以 p 开头,以 .vbs 为后缀的所有文件目录清单,结果如下) 驱动器 C 中的卷是 SYSTEM 卷的序列号是 B4E5-F200 C:\WINDOWS\system32 的目录 2002-10-08 04:00 165,389 pagefileconfig.vbs 2002-10-08 04:00 35,332 prncnfg.vbs 2002-10-08 04:00 25,086 prndrvr.vbs 2002-10-08 04:00 21,250 prnjobs.vbs 2002-10-08 04:00 32,095 prnmngr.vbs 2002-10-08 04:00 28,992 prnport.vbs 2002-10-08 04:00 15,633 prnqctl.vbs 2002-10-08 04:00 3,621 pubprn.vbs 8 个文件 327,398 字节 0 个目录 1,826,009,088 可用字节 2. copy :复制文件 C:\>copy *.* E:\backup (复制当前目录下所有文件到 E:\backup) C:\>copy pic\ws?.jpg F: (复制 pic 目录下以 ws 开头,后任跟一个字符的 jpeg 图片到 F 盘) C:\>copy a1+a2 (将 a2 的内容添加到 a1 尾,使 a1 的内容更新) 3. del :删除文件 C:\>del *.tmp C:\>del 1.txt 2.txt 4. ren :重命名文件 * 小结: 1. 本章限于篇幅,只介绍了一些基本命令,相信您已经有能力自己阅读帮助文档。正如前面所提到的,Windows 命令的联机帮助是了解某个命令的最佳方法。输入“help”可得到一份常见命令列表。输入“命令名 /?”或“help 命令名”可以找到指定的联机帮助页。联机帮助可能比较简短,详细的说明请查看 Windows 的“帮助和支持中心”。开始 -> 帮助和支持 -> 最上面的“索引” -> “关键字”框中输入“命令行”回车,然后点击右边正文部分的最后一行中的“命令行参考”,进入“命令行参考 A-Z”,该参考手册为每个命令提供了异常详细的说明和范例,是 Windows 命令的最权威、可信的资料。另外,微软的网站(http://www.microsoft.com/zh/cn/)上也有相关的帮助信息。这方面请参考附录3。 2. 命令的一般格式如下: 3. 命令参数中的文件名一般形式如下: 3.3 通配符使用命令行界面的一个比较有趣的方面在于,能够使用特定的称为通配符或元字符(metacharacter)的字符来改变和增强命令的行为。这些字符并不是命令的一部分,但它们是命令行解释器的特性,能够让用户创建复杂的操作。 正如上一节提到过的,Windows 中有两种通配符:问号(?) 匹配文件名中的任何一个字符,星号(*)匹配文件名中的零个或多个字符。可以在一个命令中综合使用这些通配符以定位多个文件,或者在不记得文件的全名时找到该文件。例如,假定当前目录中含有文件: date help help1 help2 help3 myprog.f myprog.o 表3-1给出了匹配实例。
另外,通配符在 Windows 的“搜索”中也可以使用。 3.4 命令输入技巧打错了命令,怎样修改呢?怎样才能更高效地输入命令?这些都是本节将探讨的问题。 在 DOS 操作系统中,打错命令有两种情况: 常用 DOS 功能键有:
实际上,我们更多时候会在 Windows 下修改,“命令行解释器”给我们提供了更方便的修改方法。首先,在未回车时输左方向键(←)并不会像 DOS 中那样删除前一个字符,只会移动光标,故只需把光标移到有错误的地方修改即可。并且,Windows 中可使用上方向键(↑)来遍历已经输过的命令。更为重要的是,“命令行解释器”提供了强大的复制/粘贴功能!姑举一例说明: 假如上一个命令是“dir transitional.txt”,现在要输入“type transitional.txt”,有两种方法: 1. 先按上方向键(↑)(或<F3>),屏幕显示:dir transitional.txt 。再按<Home>键,将光标移动到行首,按三次<Del>键,再输入 type ,即完成命令。 要提高输入效率还得靠另一个功能键:<Tab> ,它能自动补完文件名。例如,假设当前目录中以字母 t 开头的只有 transitional.txt 和 trap.exe ,但你嫌 transitional.txt 这个名字太长,于是你输入“type”空格后,输入“t”,然后按<Tab> ,命令行解释器会自动补完后面的部分,变成“type transitional.txt”,如果再按<Tab>,就会在 transitional.txt 和 trap.exe 这两个文件名之间切换。 4. 一些较高级的概念上一章介绍了 Windows 命令行的基础知识,本章将讨论一些更高级的功能,这些功能足以使 Windows 命令行成为一个非常灵活而且强大的工具。 4.1 输入输出重定向和管道每个命令都需要一个输入源和一个输出目的地。默认输入是键盘,默认输出是屏幕,这称为标准输入和标准输出。但在很多情况中,用户也许希望为单独 某次操作修改输入和输出。例如,写一个命令,从一个文件提取数据,进行加工后,输出到另一文件。这称为重定向(redirection)。 命令行解释器使用字符“<”和“>”来定义临时输入和输出源。假定用户希望使用 dir 命令列出某个目录的内容,并将输出保存到文本文件中而并非打印到屏幕上,那么他可以建立一个 dir.txt ,然后执行: C:\>dir > dir.txt C:\> 这里,以上命令不会产生输出,但会修改 dir.txt 的内容。注意字符“>”会完全覆盖 dir.txt 中已有的数据,而且 dir.txt 不存在时还会自动新建文件。如果希望保存先前数据,则可以使用 >> 操作符: C:\>dir >> dir.txt (将输出追加到 dir.txt 的末尾) C:\> 字符 < 用于修改输入,所谓输入,是指某些命令从键盘读取的输入。这种命令在 Windows 不太常见,就举 sort 为例。sort 命令要求用户输入一系列单词,每个单词占一行,以 Ctrl+Z 结束输入,然后将这些单词按字母表顺序排序并输出到屏幕上。 E:\>sort g (这里开始键盘输入) n o m e ^Z (Ctrl+Z 后回车,以下是输出) e g m n o 如果我们使用输入输出重定向呢?我们先建立一个 names.txt ,内容如下: Kobato Tomoyo Eriol Fay Meilin Rika Ruby Kaede Freya Misaki Dorothy Edward Lisa 然后执行: sort < names.txt > names-alpha.txt 该命令将输入和输出重定向结合在一起使用:将 names.txt 文件中的条目排序,然后将排序后的输出写入一个名为 names-alpha.txt 的文件中。得到的 names-alpha.txt 如下: Dorothy Edward Eriol Fay Freya Kaede Kobato Lisa Meilin Misaki Rika Ruby Tomoyo 管道(pipe)是一个操作符,它把输入和输出重定向结合在一起,从而将一个命令的输出立即作为另一个命令的输入。管道用竖直线字符(|)表示,该字符通常位于 Enter 键附近。 最经典的使用管道的命令:more 。可以说该命令大部分情况下都和管道一起使用。例如,要查看 sort 命令的帮助信息,输入 sort /? ,但一屏显示不完,使用 sort /? | more 来分屏显示。 C:\>sort /? | more SORT [/R] [/+n] [/M kilobytes] [/L locale] [/REC recordbytes] [[drive1:][path1]filename1] [/T [drive2:][path2]] [/O [drive3:][path3]filename3] /+n 指定开始每个比较的字符号码 n。/+3 说明每个 比较应从每行的第三个字符开始。少于 n 个字符 的行排在其他行之前。按默认值,从每行的第一 个字符开始比较。 /L[OCALE] locale 用指定的区域设置替代系统默认区域设置。 ""C"" 区域设置产生最快的排序顺序并且是当前的 唯一其他选择。排序总是不分大小写的。 /M[EMORY] kilobytes 指定用于排序的主内存量,单位为 KB。 最小内存量总是 160 KB。如果指定内存大小, 无论主内存的可用量是多少,指定的内存量 会全部用于排序。 要取得最佳性能,通常不指定内存大小。按默认 值,如果达到默认最大内存值,排序会一次完成 (非临时文件);否则,排序会分两次完成(没有 完全排序的数据存储在临时文件中);用于排序 和合并的内存量相等。如果输入和输出都是 文件, 默认最大内存量为可用主内存的 90%; 否则,为主内存的 45%。 /REC[ORD_MAXIMUM] characters 指定记录中的最大字符数量 (默认值为 4096,最大值为 65535)。 -- More -- 此时,屏幕左下角显示:-- More -- ,按任意键则显示下一屏,直到全部显示完。 另一个经典的使用管道的命令是 find ,用来过滤输出。例如,我要查看当前的环境变量,但我只对 PATH 感兴趣,则输入: C:\>set | find "Path" Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\bin;D:\soft\GnuP G\pub 4.2 特殊设备在 Windows 中可以使用如下设备名:
可将命令的参数指定为这些设备名,就能实现很多奇妙功能。 1. 使用 con C:\>copy con t.txt (读取键盘输入,并复制到 t.txt) Hello,world! (此处用键盘输入,以 Ctrl+Z 结束) ^Z 已复制 1 个文件。 C:\> 2. 使用 nul “粉碎”文件 文件被删除之后(指在回收站中被删除),还可以用某些软件恢复。怎样才能将文件彻底删除呢?这里提供一种简单易行的方法。 C:\>dir | find "t.txt" 2008-06-16 20:01 14 t.txt (目前为 14 字节) C:\>copy nul t.txt (将“空”复制到 t.txt ,这样就将 t.txt 的大小改写为了 0 字节) 改写 t.txt 吗? (Yes/No/All): y 已复制 1 个文件。 C:\>dir | find "t.txt" 2008-06-16 20:37 0 t.txt (文件大小已为 0 了) C:\>del t.txt (再删除即可) C:\> 使用“copy nul 文件名”的办法,将文件大小改为 0 后再删除,这样即使用软件恢复也只能恢复出来一个空文件而已,无法得到原来的那个文件了。 3. 使用 prn 或 lpt 打印文档 你是否遇到这种情况:甲电脑上的文件,要拿到乙电脑上去打印,无奈乙电脑上没安装相应软件,或无相应字体,无法打印,或效果差。这时可以通过 prn 文件来打印。即在甲电脑的“打印”对话框中选中“打印到文件”,这样会生成一 *.prn 文件,将此文件拷贝到乙电脑中,输入: copy /b *.prn lpt1 (或将 lpt1 换成你打印机的实际端口,用 mode 命令查看) 这样打印的效果和甲电脑中一模一样。但需注意,甲电脑中选择的打印机最好和实际打印的打印机型号相同,否则可能无法正确打印。若甲电脑中未安装 打印机,可选择“添加打印机”,手动添加一台打印机,并在“端口”选择“FILE:(打印到文件)”,然后选择和实际打印机相同的驱动程序。 4. 使用 mode 命令 mode 命令可查看当前可用的设备或修改设备参数,一个典型的应用是修改 con 的“代码页”(codepage)参数。详细请参考 mode 命令的帮助页。 4.3 环境变量环境变量是一个“变量名=变量值”的对应关系,每一个变量都有一个值与之对应。set 命令用于设置或查看环境变量。我们可以通过两个百分号的形式:“%变量名%”,在命令中引用变量的值。 C:\>set (列出当前所有环境变量及其值) ……省略输出若干…… windir=C:\WINDOWS C:\>cd %windir% (该命令在执行时,“%windir%”会自动被替换成“C:\WINDOWS”) C:\WINDOWS>set str=Hello! (用“set 变量名=变量值”来设置一个变量) C:\WINDOWS>echo %str% (echo 命令可回显一个字符串) Hello! C:\WINDOWS> 变量给命令或批处理文件带来了极大的灵活性,多用于批处理文件中。 |
Windows 命令行基础(上)
最新推荐文章于 2024-05-10 17:12:31 发布