1、DOS简介
1.1、什么是DOS
DOS是英文Disk Operating System的缩写,意思是“磁盘操作系统”,它是一个单用户单任务操作系统,它直接操纵管理硬盘的文件,一般都是黑底白色文字的界面。
DOS的组成:1)BOOT-引导程序;2)IO.SYS-输入输出处理程序;3)MSDOS.SYS-文件处理程序;4)COMMAND.COM-命令处理程序。
1.2、DOS的起源
1972年,一个叫加里• 基尔代尔的开发了第一个用于微处理器的高级编程语言,也就是 PL/M。
1973年他为英特尔编写了一个名为INTERP/80的8080指令集模拟器。同年,他使用PL/M语言编写出了第一个微型计算机操作系统CP/M,使8080处理器能够控制软盘驱动器。CP/M在磁盘上是无法运行的,必须将其加载到内存中,而在主板上的ROM上会放置一小段程序,当启动计算机时会执行这一小段程序,把CP/M中的其余部分都加载到内存,这个过程就称为系统的引导(Booting)。 CP/M的在内存中的空间结构大致可以分为以下五层:
BIOS的主要功能就是系统加电时的自检、装入DOS引导程序、I/O设备的I/O处理以及接口的控制。
1974年,加里• 基尔代尔就专门成立了Digital Research,专门从事市场营销和开发的CP/M操作系统。由于CP/M的出色表现,在8080处理器时代,可谓盛极一时。
1978年6月,Intel推出了8086微处理器,从而开始X86处理器的传奇。
1980年,由于当时CP/M-86的推迟,SCP(西雅图计算机产品公司)一个叫Tim Paterson的年轻小伙,基于CP/M的思想,花了6周时间,匆匆忙忙的写了一个叫QDOS的操作系统(改版之后改为86-DOS),后来Tim Paterson向微软展示了自己为8086写的86-DOS。起初,微软以极低的价格买下了86-DOS的销售经营权。同年七月,买断了86-DOS。
1981年,IBM 推出了个人计算机IBM PC,当时可供选择的操作系统有三个:CP/M-86、UCSD p-System、86-DOS。由于价格上的因素Digital Research没能和IBM达成合作,相比之下,微软的86-DOS价格更为合适,于是微软将其改名为MS-DOS,并以次名授权给了IBM作为第一代个人计算机操作系统。IBM PC兼容机的走红令MS-DOS卖得很火,其他生产IBM PC兼容机的厂商也被授权使用MS-DOS,很快MS-DOS就成为了标准。后来CP/M-86市场已经彻底萎缩了。
1983年,微软开始研发Microsoft Windows,最初的目的是在MS-DOS的基础上提供一个多任务的图形用户界面,隔年苹果率先推出了图形用户界面的操作系统,而微软在1985年11月20日推出了历史上第一款视窗操作系统——Windows 1.0,但比较简陋。
1990年,Windows 3.0重磅推出,微软在这款操作系统的界面及功能上进行了较大的改进,出现了程序管理器和图标,这使得Windows越来越受用户欢迎。
1995年8月24日,微软推出具有里程碑意义的Windows 95,并实现真正意义上的图形用户界面,使操作界面变得更加友好。
直到Windows 95的出现,使得DOS开始从舞台的主角慢慢走向了配角,这15年间(1980-1995)的DOS可谓是风光无限。
2、DOS命令简介
DOS命令思维导图:
2.1、基本操作
2.1.1、cmd打开方式
1)Win键+R 输入"cmd"打开(推荐);
2)"开始"菜单,在搜索框中输入"cmd",点击"cmd.exe"即可打开(右击则可以选择以管理员身份运行);
3)任意空白位置 shift+右键,选择"此处打开命令窗口(W)";
4)在资源管理器(任意盘符)下的地址栏前面加上"cmd" 路径;
5)在任务管理器(应用程序)界面中右击新建任务 输入"cmd";
2.1.2、快捷键(cmd命令窗口下)
1)↑↓键:可快速选择历史命令;
2)F7:可查看全部历史命令,↑↓键翻页,→键选择,或直接Enter执行;
3)Alt+F7:清除所有曾经输入命令的历史记录;
4)Tab:自动补充当前文件夹名称,与cd配合可快速进入子目录;
5)Esc:清除当前命令行;
6)Ctrl+C:强行中止命令执行;
7)Alt+PrintScr:截取屏幕上当前命令窗里的内容;
8)输入exit: 退出窗口;
2.1.3、其他
1)复制粘贴:cmd中无法使用Ctrl+C和Ctrl+V,需要复制,右键点击标记,再选中即可完成复制;
2)属性设置:点击左上角的小图标,可进入属性设置;
2.2、常用的命令工具
2.2.1、cmd.exe-CMD命令提示符
cmd是command的缩写,是早期字符界面的操作系统,可以通过编写命令来管理计算机。我们可以看到在System32和SysWOW64两个目录下都有一个cmd.exe的文件。
1978年Intel推出了首颗16位处理器-8086;
1985年又推出了首颗32位处理器-80386,Intel把80-286、80-386...这种架构的CPU统称为x86,这也是x86名字的由来。需求与技术的发展总是相辅相成的,慢慢的人们发现32位的操作系统在速度、性能上已经无法满足我们对速度的追求,于是Intel开始向64位架构发展。
起初的64位都只用于特殊领域的超级电脑及工作站,1999年,Intel发布IA-64架构的指令集(不兼容x86),而AMD的实现方式与Intel不同,选择继续扩展IA-32,并增加了64位通用寄存器,支持64位虚地址,向前兼容IA-32,后命名为AMD64,Intel主打的IA-64走的并不顺利,于是Intel扔掉了安腾架构(后来安腾技术团队转向至强产品),也开始搞兼容IA-32,并且在2005年宣布完全兼容AMD的64位指令集,于是现在的操作系统很少说是面向Intel还是AMD的,在称谓上大多数的厂商还是使用X86_64来称呼此架构。
而之所以在System32和SysWOW64两个目录下都有一个cmd.exe,的历史缘由也来源于此。32位操作系统出现后,Windows上的很多应用程序默认将System32文件夹作为存放与当前系统位数一致的系统文件,Windows为了保证这些应用程序可以顺利地过渡到64位,微软也迫不得已将System32当做与当前系统位数一致的系统文件夹,而让32位的系统文件,搬到了SysWow64中去。
这里所说的位数就是CPU一个时钟周期内能并行处理的位数,32位是4个字节,64位是8个字节;CPU位数=CPU中通用寄存器的位数=CPU能够一次并行处理的数据位宽。
例如:
8086,16位通用寄存器,16位数据线,20位地址线,它是16位CPU;
8088,16位通用寄存器,8位数据线,20位地址线,它也是16位CPU。
在System32目录下,我们还能看到有很多“*.exe”结尾的可执行程序,比如:mstsc.exe、calc.exe、taskmgr.exe、mspaint.exe、SnippingTool.exe等等程序。
2.2.2、mstsc-远程桌面
mstsc是Microsoft terminal services client(微软终端服务客户端)的缩写,用于创建与终端服务器或其他远程计算机的连接。
首先win+R,输入mstsc,再输入我们需要连接到的远程桌面的IP地址即可。如果我们希望别人能远程连接我们的电脑,我们可以在控制面板-系统-高级系统设置-远程中开启远程桌面桌面服务:
远程桌面采用的是RDP协议,是一种类似telnet的技术,他是从telnet协议发展而来的,是一种图形化的telnet,它始终使用网络端口3389。开启后,我们使用netstat -an就可以看到有3389端口已经开启了,或者使用netstat -an | find "3389"查找。
2.2.3、calc-计算器
calc是calculator-计算器的缩写,我们使用命令能很快的调起我们的计算器,当然也可以直接搜索计算器。
2.2.4、regedit-注册表
-
什么是注册表
注册表是Microsoft Windows中系统定义的数据库,用于存储和检索系统组件和应用程序的配置信息。
早期的注册表是以ini为扩展名的文本文件形式的配置文件,从Windows 95操作系统开始,才逐渐形成了注册表;Windows NT是第一个从系统级别广泛使用注册表的操作系统,并在其后的操作系统中继续沿用至今。
注:注册表的数据因Windows的版本会有所差异,非绝对必要,不应编辑不属于应用程序的注册表数据。如果注册表中存在错误,系统可能无法正常工作。
-
如何打开注册表
使用win+R-->再输入regedit;
-
注册表的结构
注册表是一个分层数据库,数据以树格式进行结构化(包括子树-项(键)-子项-键值)。
(子树)名称 | 描述 |
---|---|
HKEY_CLASSES_ROOT | 定义文档的类型(扩展名)和与这些类型关联的属性 (或类) 。windows下的每件事、每个文件、每个目录、每个驱动...都可以看做是一个对象,每个对象都有确定的属性,其主要功能就是将一个对象和一个扩展名关联、和一个图标关联和一个命令行动关联。 |
HKEY_CURRENT_USER | 定义当前用户的首选项。这些首选项包括环境变量的设置、有关程序组的数据、颜色、打印机、网络连接和应用程序首选项。 |
HKEY_LOCAL_MACHINE | 定义计算机的物理状态,包括有关总线类型、系统内存和已安装硬件和软件的数据。包含5个子项,分别为HARDWARE子项、SAM子项、SECURITY子项、SOFTWARE子项和SYSTEM子项。 |
HKEY_USERS | 本地计算机上的新用户定义默认用户配置,并为当前用户定义用户配置。 |
HKEY_CURRENT_CONFIG | 包含有关本地计算机系统的当前硬件配置文件的信息。 |
注册表的主要作用:1)记录安装信息;2)设置硬件属性;3)定制windows以及应用软件;
注:有兴趣的可以去官方文档中阅读。
2.2.5、taskmgr-任务管理器
taskmgr即Task Manager,是Windows系统中的任务管理器查询,是Windows操作系统中自带的出现,它是系统级别最高的进程,提供了有关计算机的性能信息,并显示了计算机上所有运行的出现和进行详细信息,可管理进程。
2.2.6、mspaint-画图
mspaint是Windows操作系统的自带的一个位图编辑器,可以对各种位图格式的图画进行编辑,使用比较方便。
2.2.7、snippingtool-截图工具
snippingtool是win7-win10系统自带的一个截图软件,支持无规则截图。
2.2.8、其他命令及工具
1)shutdown-关机命令
shutdown -s 自动关机
shutdown -r 关机并重启
shutdown -a :可取消定时关机
shutdown -s -t 60:60秒后自动关机
shutdown -r -t 60:60秒后自动重启
2)services.msc-本地服务设置
3)notepad-记事本
4)control-控制面版
5)write-写字板
6)explorer-打开资源管理器
7)Firewall.cpl-Windows防火墙
8)chkdsk-Chkdsk磁盘检查
9)cleanmgr-磁盘清理工具
10)winver-关于Windows
11)eudcedit-造字程序
当然还有很多这里就不一一列举了。
2.3、帮助及其他基本命令
2.3.1、help命令
DOS命令比较多,我们很难记住全部的命令,有时候就可以借助帮助命令,来查看。
【命令功能:】查看命令手册
【命令格式:】help [command]
【使用语法:】help [CMD命令] 提供有关命令的帮助信息
【使用技巧:】help可当您想具体了解DOS命令的使用方法时使用,help不指定具体命令时,可以使用help | clip 将目录复制到剪切板复制出来
-
使用范例
2.3.2、使用[DOS] /?
当我们清楚的记得命令的名称,却对用法有些模糊,也可以使用这种方式查看命令帮助信息。
【命令功能:】查看命令帮助信息
【命令格式:】[command] /?
【使用语法:】[CMD命令] /? 提供当前命令的帮助信息
-
使用范例
2.3.3、cls-清屏命令
【命令功能:】清除屏幕
【命令格式:】cls
2.3.4、date-显示或设置日期
【命令功能:】显示或设置日期
【命令格式:】date [/T | date]
【常用选项:】
/T 指示命令只输出当前日期,但不提示输入新日期;
date 按输出的格式设置日期yyyy/MM/dd
-
使用范例
2.3.5、time-显示或设置时间
【命令功能:】显示或设置时间
【命令格式:】time [/T | time]
【常用选项:】
/T 指示命令只输出当前时间,但不提示输入新时间;
time 按输出的格式设置时间yyyy/MM/dd
2.3.6、ver-显示Windows版本
【命令功能:】显示Windows版本
【命令格式:】ver
2.3.7、vol-显示磁盘卷标和序列号
【命令功能:】显示磁盘卷标和序列号(如果存在)
【命令格式:】vol [drive:]
【常用选项:】
drive 若省略盘符,显示当前驱动器卷标;
-
使用范例
2.3.8、exit-退出cmd程序
【命令功能:】退出 CMD.EXE 程序(命令解释器)或当前批处理脚本
【命令格式:】exit [/B] [exitCode]
【常用选项:】
/B 指定要退出当前批处理脚本而不是CMD.EXE。如果从一个批处理脚本外执行,则会退出CMD.EXE;
exitCode 指定一个数字号码。如果指定了/B,将ERRORLEVEL设成那个数字。如果退出CMD.EXE,则用那个数字设置过程退出代码。
2.4、目录操作命令
2.4.1、cd-显示当前目录或切换目录
【命令功能:】 显示当前目录名或改变当前目录
【命令格式:】CD [/D] [drive:][path] 或 CHDIR [/D] [drive:][path]
CD [..] 切到父目录
【常用选项:】
/D 选项可以在切换当前目录的同时,也切当前驱动器
.. 两个点代表上级目录,一个点代表当前目录
【使用技巧:】
cd .>cd.txt可新建文件
-
使用范例
2.4.2、dir-显示目录列表
【命令功能:】 显示目录中的文件和子目录列表
【命令格式:】DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]【常用选项:】
/A 显示具有指定属性的文件。
属性 D 目录 R 只读文件
H 隐藏文件 A 准备存档的文件
S 系统文件 I 无内容索引文件
L 解析点 - 表示“否”的前缀
/B 使用空格式(没有标题信息或摘要)。
/C 在文件大小中显示千位数分隔符。这是默认值。用 /-C 来禁用分隔符显示。
/D 跟宽式相同,但文件是按栏分类列出的。
/L 用小写。
/N 新的长列表格式,其中文件名在最右边。
/O 用分类顺序列出文件。
排列顺序 N 按名称(字母顺序) S 按大小(从小到大)
E 按扩展名(字母顺序) D 按日期/时间(从先到后)
G 组目录优先 - 反转顺序的前缀
/Q 显示文件所有者。
/S 显示指定目录和所有子目录中的文件。
/T 控制显示或用来分类的时间字符域。时间段:C 创建时间 A 上次访问时间 W 上次写入的时间
/W 用宽列表格式。
/4 用四位数字显示年
-
使用范例(显示指定属性的文件)
2.4.3、md/mkdir-创建目录
【命令功能:】创建目录,是make directory的缩写
【命令格式:】MD [drive:]path 或 MKDIR [drive:]path
【使用技巧:】md/mkdir 创建目录时如果存在多层a\b\c上层目录不存在会依次创建
-
使用范例
2.2.4、path-路径设置命令
【命令功能:】为可执行文件显示或设置一个搜索路径
【命令格式:】PATH [[drive:]path[;...][;%PATH%]
【使用技巧:】
键入 PATH ; 清除所有搜索路径设置并指示 cmd.exe 只在当前目录中搜索。
键入 PATH 但不加参数,显示当前路径(也就是我们常说的系统的环境变量)。
将 %PATH% 包括在新的路径设置中会将旧路径附加到新设置。
-
使用范例
2.4.5、rd/rmdir-删除一个目录
【命令功能:】 删除一个目录
【命令格式:】RD [/S] [/Q] [drive:]path 或 RMDIR [/S] [/Q] [drive:]path
【常用选项:】
/S 除目录本身外,还将删除指定目录下的所有子目录和文件。用于删除目录树。/Q 安静模式,带 /S 删除目录树时不要求确认
-
使用范例
2.4.6、tree-以树形结构显示文件/目录
【命令功能:】 以图形显示驱动器或路径的文件夹结构
【命令格式:】TREE [drive:][path] [/F] [/A]
【常用选项:】
/F 显示每个文件夹中文件的名称。
/A 使用 ASCII 字符,而不使用扩展字符。
-
使用范例
2.5、文件操作命令
2.5.1、attrib-显示或更改文件属性
【命令功能:】 显示或更改文件属性
【命令格式:】ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [+I | -I]
[drive:][path][filename] [/S [/D] [/L]]
【常用选项:】
+ 设置属性。
- 清除属性。
R 只读文件属性。
A 存档文件属性。
S 系统文件属性。
H 隐藏文件属性。
I 无内容索引文件属性。
[drive:][path][filename] 指定 attrib 要处理的文件。
/S 处理当前文件夹及其所有子文件夹中的匹配文件。
/D 也处理文件夹。
/L 处理符号链接和符号链接目标的属性。
-
使用范例
2.5.2、copy-复制文件
【命令功能:】 将一份或多份文件复制到另一个位置
【命令格式:】COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B ] source [/A | /B]
[+ source [/A | /B] [+ ...]] [destination [/A | /B]]【常用选项:】
source 指定要复制的文件。
/B 表示一个二进位文件。
/D 允许解密要创建的目标文件destination 为新文件指定目录和/或文件名。
/Y 不使用确认是否要覆盖现有目标文件的提示。
/-Y 使用确认是否要覆盖现有目标文件的提示。
/Z 用可重新启动模式复制已联网的文件。
/L 如果源是符号链接,请将链接复制到目标而不是源链接指向的实际文件。
-
使用范例
2.5.3、copy con-从控制台创建文件
【命令功能:】 从控制台创建文件
【命令格式:】copy con file
输入内容,然后ctrl+z,将输入的内容保存到file中
【使用技巧:】
con 是dos 设备文件的简称。在dos中把很多外部设备作为文件,称为设备文件。
CON 控制台(键盘/显示器);
AUX 第一串行通信口;
PRN 第一并行通信口/打印机;
COM1 第一串行通信口;
LPT1 第一并行通信口/打印机;
NUL 空文件(不存在的设备);
-
使用范例
2.5.4、del-删除一个或多个文件
【命令功能:】 删除一个或多个文件
【命令格式:】DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names【常用选项:】
names 指定一个或多个文件或者目录列表。通配符可用来删除多个文件。
如果指定了一个目录,该目录中的所有文件都会被删除。
/P 删除每一个文件之前提示确认。
/F 强制删除只读文件。
/S 删除所有子目录中的指定的文件。
/Q 安静模式。删除全局通配符时,不要求确认
/A 根据属性选择要删除的文件
属性 R 只读文件 S 系统文件
H 隐藏文件 A 存档文件
I 无内容索引文件 L 重分析点
- 表示“否”的前缀
-
使用范例
2.5.5、echo-显示信息(+ >[重定向])
【命令功能:】 显示信息,或将命令回显打开或关上
【命令格式:】ECHO [ON | OFF] 或 ECHO [message]
【常用选项:】
ON | OFF 通常作为控制批处理命令在执行时是否显示命令行自身的开关
如果想关闭ECHO OFF命令行自身的显示则需要在该命令行前加上“@”
【使用技巧:】
echo [message] > file 可将message写入file
echo [message] >> file 可往file文件中追加message
echo. echo后紧跟一点,输出一个回车
echo.|time 相当于在time输出后给出一个回车
-
使用范例1
而在批处理命令下(echo.bat):屏蔽命令提示符及命令本身,如果不希望显示echo off,则可将其写成@echo off
::echo.batecho offcdcd .\acdpause
-
使用范例2
2.5.6、find-在文件中搜索字符串
【命令功能:】 在文件中搜索字符串
【命令格式:】 FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]
【常用选项:】
/V 显示所有未包含指定字符串的行。
/C 仅显示包含字符串的行数。
/N 显示行号。
/I 搜索字符串时忽略大小写。
"string" 指定要搜索的文本字符串。
[drive:][path]filename 指定要搜索的文件。
-
使用范例
2.5.7、findstr-在文件中寻找字符串
【命令功能:】 在文件中寻找字符串
【命令格式:】FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ ...]]【常用选项:】
/B 在一行的开始配对模式。
/E 在一行的结尾配对模式。
/L 按字使用搜索字符串。
/R 将搜索字符串作为一般表达式使用。
/S 在当前目录和所有子目录中搜索匹配文件。
/I 指定搜索不分大小写。
/X 打印完全匹配的行。
/V 只打印不包含匹配的行。
/N 在匹配的每行前打印行数。
/M 如果文件含有匹配项,只打印其文件名。
/O 在每个匹配行前打印字符偏移量。
/P 忽略有不可打印字符的文件。
strings 要查找的文字。
[drive:][path]filename
【使用技巧:】findstr比find更强大,支持正则
一般表达式的快速参考:
. 通配符: 任何字符
* 重复: 以前字符或类出现零或零以上次数
^ 行位置: 行的开始
$ 行位置: 行的终点
[class] 字符类: 任何在字符集中的字符
[^class] 补字符类: 任何不在字符集中的字符
[x-y] 范围: 在指定范围内的任何字符
\x Escape: 元字符 x 的文字用法
\xyz\> 字位置: 字的结束
-
使用范例
2.5.8、more-逐屏显示输出
【命令功能:】 逐屏显示输出
【命令格式:】MORE [/E [/C] [/P] [/S] [/Tn] [+n]] < [drive:][path]filename
command-name | MORE [/E [/C] [/P] [/S] [/Tn] [+n]]
MORE /E [/C] [/P] [/S] [/Tn] [+n] [files]【常用选项:】
[drive:][path]filename 指定要逐屏显示的文件。
command-name 指定要显示其输出的命令。
/E 启用扩展功能
/C 显示页面前先清除屏幕
/P 扩展 FormFeed 字符
/S 将多个空白行缩成一行
/Tn 将制表符扩展为 n 个空格(默认值为 8)开关可以出现在 MORE 环境变量中。
+n 从第 n 行开始显示第一个文件
files 要显示的文件列表。使用空格分隔列表中的文件。
如果已启用扩展功能,则在 -- More -- 提示处 接受下列命令:
P n 显示下 n 行
S n 跳过下 n 行
F 显示下个文件
Q 退出
= 显示行号
? 显示帮助行
显示下一页
显示下一行
-
使用范例
2.5.9、move-移动、重命名文件和目录
【命令功能:】 移动文件并重命名文件和目录
【命令格式:】 移动一个文件:MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination
重命名一个目录:MOVE [/Y | /-Y] [drive:][path]dirname1 dirname2
-
使用范例
2.5.10、rem-批处理文件加注释
【命令功能:】 在批处理文件或 CONFIG.SYS 里加上注解或说明
【命令格式:】REM [comment]
【使用技巧:】
:: 注释内容(其实一个冒号也可以,后面再加上任何一个非数字或字母的字符,但通常使用两个冒号)
rem 注释内容(不能出现重定向和管道符号)
echo 注释内容(不能出现重定向和管道符号)> nul
-
使用范例
2.5.11、ren-重命名文件
【命令功能:】 重命名文件
【命令格式:】 RENAME [drive:][path]filename1 filename2.
REN [drive:][path]filename1 filename2.
-
使用范例
2.4.12、type-显示文本文件内容(+ nul >可创建)
【命令功能:】 显示文本文件的内容
【命令格式:】TYPE [drive:][path]filename
【使用技巧:】前面我们说到NUL是一个不存在的设备,代表空的虚拟文件
所以,当我们把命令的输出重定向到nul上,即可实现屏蔽命令的输出,又不产生实际的文件。
>nul 屏蔽标准输出在屏幕上的显示
2>nul 屏蔽错误信息的显示
-
使用范例
2.5.13、xcopy/robocopy-复制文件/目录
【命令功能:】复制文件和目录树
【命令格式:】XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]
[/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
[/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B]
[/EXCLUDE:file1[+file2][+file3]...]【常用选项:】
source 指定要复制的文件。
destination 指定新文件的位置和/或名称。
/A 仅复制有存档属性集的文件,但不更改属性。
/M 仅复制有存档属性集的文件,并关闭存档属性。
/S 复制目录和子目录,不包括空目录。
/E 复制目录和子目录,包括空目录。与 /S /E 相同。可以用来修改 /T。
/C 即使有错误,也继续复制。
/Q 复制时不显示文件名。
/F 复制时显示完整的源文件名和目标文件名。
/H 也复制隐藏文件和系统文件。
/R 覆盖只读文件。
/T 创建目录结构,但不复制文件。不包括空目录或子目录。/T /E 包括空目录和子目录。
/Y 取消提示以确认要覆盖现有目标文件。
注:什么是存档属性?存档属性是文件/文件夹的一种属性,表示该文件或文件夹已经备份过。
在视窗系统中,一般文件属性有四种类型:
1)只读-表示该文件不能被修改(针对文件有效);
2)隐藏-表示该文件在系统中是隐藏的,在默认情况下用户看不到这些文件;
3)系统-表示该文件是操作系统的一部分;
4)存档-表示该文件已经备份过了,一般备份软件用此来控制备份文件。
-
使用范例
ROBOCOPY
【命令功能:】 Windows 的可靠文件复制
【命令格式:】ROBOCOPY source destination [file [file]...] [options]
【常用选项:】
source 源目录(驱动器:\路径或\\服务器\共享\路径)
destination 目标目录(驱动器:\路径或\\服务器\共享\路径)
file 要复制的文件(名称/通配符: 默认为 "*.*")
/S 复制子目录,但不复制空的子目录
/E 复制子目录,包括空的子目录
/MON:n :: 监视源;发现多于 n 个更改时再次运行
/MIR 镜像目录树(等同于 /E 和 /PURGE)
/ETA 显示复制文件的预期到达时间
注:Robocopy取代了较新版本的Windows中的XCopy,Robocopy能显示复制进度且Robocopy在发生错误时会重试,而XCopy不会。
-
使用范例
robocopy c:\cmdTest\a c:\cmdTest\ec\ *.txt .mp3 /ETA 意思是将c:\cmdTest\a目录下的.txt *.mp3文件复制到c:\cmdTest\ec\目录下,虽然我们直接复制已经很方便了,但是如果在一个多二复杂的文件夹中要挑选部分文件命令还是非常快的。
2.6、磁盘操作
2.6.1、chkdsk-检查磁盘并显示状态报告
【命令功能:】 检查磁盘并显示状态报告
【命令格式:】 CHKDSK [volume[[path]filename]]] [/F] [/V] [/R] [/X] [/I] [/C] [/L[:size]] [/B]
【常用选项:】
volume 指定驱动器号(后面跟一个冒号)、入点或卷名。
filename 仅用于 FAT/FAT32: 指定要检查是否有碎片的文件。
/F 修复磁盘上的错误。
/V 在 FAT/FAT32 上: 显示磁盘上每个文件的整路径和名称。
在 NTFS 上: 如果有清除消息,则显示。
/R 查找损坏的扇区并恢复可读信息(隐含 /F)。
/I 仅用于 NTFS: 对索引项进行强度较小的检查。
/C 仅用于 NTFS: 跳过文件夹结构的循环检查。
/B 仅用于 NTFS: 重新评估该卷上的坏簇(隐含 /R)
【使用技巧:】
CHKDSK全称Microsoft Check Disk,是一个用于磁盘检查的指令程序。CHKDSK一般只显示被检测磁盘的状态报告。可通过指定参数,来修复错误。
在某些情况下,chkdsk可能花费几十分钟甚至几个小时。
2.6.2、chkntfs-启动时显示或修改磁盘检查
【命令功能:】 启动时显示或修改磁盘检查
【命令格式:】 CHKNTFS volume [...]
CHKNTFS /D
CHKNTFS /T[:time]
CHKNTFS /X volume [...]
CHKNTFS /C volume [...]
【常用选项:】
volume 指定驱动器号(后面跟一个冒号)、装入点或卷名。
/D 将计算机还原为默认行为;启动时检查所有驱动器,并对有问题的驱动器运行 chkdsk。
/T:time 将AUTOCHK初始递减计数时间更改为指定的时间,单位为秒。如果没有指定时间,则显示当前设置。
/X 将驱动器排除在启动时检查范围之外。被排除的驱动器在命令调用之间不会累计。
/C 安排驱动器在启动时检查;如果驱动器有问题,则运行 chkdsk。
【使用技巧:】
CHKNTFS /C 如果启动时检测到驱动器有问题,则会在下一次重启是运行chkdsk;
CHKNTFS /X C: 禁止chkdsk在驱动器C:上运行。
2.6.3、convert-将FAT卷转换为NTFS
【命令功能:】 将FAT卷转换为NTFS
【命令格式:】 CONVERT volume /FS:NTFS [/V] [/CvtArea:filename] [/NoSecurity] [/X]
【常用选项:】
volume 指定驱动器号(后面跟一个冒号)、装入点或卷名。
/FS:NTFS 指定要将此卷转换为 NTFS。
/V 指定将在详细模式下运行 Convert。
/CvtArea:filename 指定根目录中的一个连续文件,该文件将是 NTFS 系统文件的占位符。
/NoSecurity 指定所有用户均可以访问转换文件和目录的安全设置。
/X 如果必要,请先强制卸除卷。该卷的所有打开句柄将会无效。【使用技巧:】
CONVERT可以直接在不破坏FAT文件系统的前提下,将FAT转换为NTFS。也就是我们通常所说的无损转换分区。
FAT和NTFS是系统硬盘分区的两种格式(文件系统)。比如:FAT32支持分区的大小最大为32GB,实际中不支持单个文件大于4GB;而NTFS很好地解决了容量限制的问题,分区最大容量可以支持到16EB(2的24次方TB)。
2.6.4、format-格式化磁盘
【命令功能:】 格式化磁盘以供 Windows 使用(慎用)
【命令格式:】 FORMAT volume [/FS:file-system] [/V:label] [/Q] [/A:size] [/C] [/X][/P:passes] [/S:state]
FORMAT volume [/V:label] [/Q] [/F:size] [/P:passes]
FORMAT volume [/V:label] [/Q] [/T:tracks /N:sectors] [/P:passes]
FORMAT volume [/V:label] [/Q] [/P:passes]
FORMAT volume [/Q]
【常用选项:】
volume 指定驱动器号(后面跟一个冒号)、装入点或卷名。
/FS:filesystem 指定文件系统的类型(FAT、FAT32、exFAT、NTFS、或 UDF)。
/V:label 指定卷标。
/Q 执行快速格式化。请注意,此开关可替代 /P。
/C 仅适于 NTFS: 默认情况下,将压缩在该新建卷上创建的文件。
/A:size 替代默认分配单元大小。强烈建议您在通常情况下使用默认设置。
NTFS 支持 512、1024、2048、4096、8192、16K、32K、64K。
FAT 支持 512、1024、2048、4096、8192、16K、32K、64k,
(128k、256k 用于大于 512 个字节的扇区)。
FAT32 支持 512、1024、2048、4096、8192、16k、32k、64k,
(128k 、256k 用于大于 512 个字节的扇区)。
EXFAT 支持 512、1024、2048、4096、8192、16K、32K、64K、 128K、
256K、512k、1M、2M、4M、8M、16M、32M。
2.6.5、hostname-打印当前主机的名称
【命令功能:】 打印当前主机的名称
【使用技巧:】右击“我的电脑”选择“属性”--“计算机名”
2.6.6、label-创建、更改或删除磁盘的卷标
【命令功能:】 创建、更改或删除磁盘的卷标
【命令格式:】 LABEL [drive:][label]
LABEL [/MP] [volume] [label]
【常用选项:】
drive: 指定驱动器号。
label 指定卷标。
/MP 指定卷应被视为装入点或卷名。
volume 指定驱动器号(后面跟一个冒号)、装入点或卷名。如果指定了卷名,/MP 标志则不必要。
2.7、网络操作
2.7.1、arp-显示和修改地址解析协议
【命令功能:】 显示和修改地址解析协议(ARP)使用的“IP 到物理”地址转换表。
【命令格式:】 ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]【常用选项:】
-a 通过询问当前协议数据,显示当前 ARP 项。
如果指定 inet_addr,则只显示指定计算机的 IP 地址和物理地址。如果不止一个网络
接口使用 ARP,则显示每个 ARP 表的项。
-g 与 -a 相同。
-v 在详细模式下显示当前 ARP 项。所有无效项和环回接口上的项都将显示。
inet_addr 指定 Internet 地址。
-N if_addr 显示 if_addr 指定的网络接口的 ARP 项。
-d 删除 inet_addr 指定的主机。inet_addr 可以是通配符 *,以删除所有主机。
-s 添加主机并且将 Internet 地址 inet_addr与物理地址 eth_addr 相关联。物理地址是用
连字符分隔的 6 个十六进制字节。该项是永久的。
eth_addr 指定物理地址。
if_addr 如果存在,此项指定地址转换表应修改的接口的 Internet 地址。如果不存在,则使用第一
个适用的接口。【使用技巧:】
> arp -s 157.55.85.212 00-aa-00-62-c6-09.... 添加静态项。
> arp -a .... 显示 ARP 表。关于ARP:
ARP(Address Resolution Protocol),即地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。
两台主机之间要实现通信,只要能有唯一的IP地址就能实现一对一的通信。但是在最初的互联网中,所设计的IPv4由32位二进制数字,地址总容量约43亿个,面对如今庞大的互联网基数,这个是远远不够的。为了能区分唯一身份,有了MAC(物理)地址——唯一标识一个网卡,由设备商烧入。如果再给每个接入的设备分配上一个IP,我们就能通过IP+MAC地址实现主机间的通信了。
有人会想有了唯一身份MAC地址为什么还需要IP地址?全球主机数这么多,要实现两个主机间通信,要记住如此庞大的MAC地址是不现实的。MAC地址决定下一跳(不一定是终点),IP地址决定终点到哪去。
在局域网中传输数据,首先会将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后会将IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。有网卡的主机中都有一个ARP表,保存着同一网络中IP到MAC之间的映射记录。ARP表并不是一成不变的,大约每2分钟更新一次,这种纪录称为动态式(Dynamic)记录。还有一种称为静态记录,也就是表中的记录不变,直到TCP/IP协议重启后才会消失。
-
使用范例
2.7.2、finger-查询站点及用户信息
【命令功能:】 finger(端口79)是互联网中最古老的协议之一,用于提供站点及用户信息,一般通过finger服务,可以查询站点上在线用户清单及一些其他有用的信息。
【命令格式:】 FINGER [-l] [user]@host [...]
【常用选项:】
-l 以长列表格式显示信息。
user 指定需要其信息的用户。省略 user 参数
将显示与指定主机上所有用户有关的信息。
@host 指定需要其用户信息的远程系统上的服务器。
2.7.3、ftp-文件传输
【命令功能:】 FTP是ARPANet的标准文件传输协议,就是现今Internet的前身
【命令格式:】 FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-A] [-x:sendbuffer] [-r:recvbuffer] [-b:asyncbuffers] [-w:windowsize] [host]
【常用选项:】
-v 禁止显示远程服务器响应。
-n 禁止在初始连接时自动登录。
-i 关闭多文件传输过程中的交互式提示。
-d 启用调试。
-g 禁用文件名通配(请参阅 GLOB 命令)。
-s:filename 指定包含 FTP 命令的文本文件;命令在 FTP 启动后自动运行。
-a 在绑字数据连接时使用所有本地接口。
-A 匿名登录。
host 指定主机名称或要连接到的远程主机的 IP 地址。
【使用技巧:】
我们可以使用test.rebex.net来测试ftp,使用说明:https://test.rebex.net/
注:All servers are read-only. You cannot upload files, delete e-mails etc.
-
使用范例
2.7.4、ipconfig-显示或设置网络设备
【命令功能:】 显示或设置网络设备
【命令格式:】 ipconfig [/allcompartments] [/? | /all | /renew [adapter] | /release [adapter] | /renew6 [adapter] | /release6 [adapter] | /flushdns | /displaydns | /registerdns | /showclassid adapter | /setclassid adapter [classid] | /showclassid6 adapter | /setclassid6 adapter [classid] ]
【常用选项:】
/? 显示此帮助消息
/all 显示完整配置信息。
/release 释放指定适配器的 IPv4 地址。
/release6 释放指定适配器的 IPv6 地址。
/renew 更新指定适配器的 IPv4 地址。
/renew6 更新指定适配器的 IPv6 地址。
/flushdns 清除 DNS 解析程序缓存。
/registerdns 刷新所有 DHCP 租约并重新注册 DNS 名称
/displaydns 显示 DNS 解析程序缓存的内容。
/showclassid 显示适配器的所有允许的 DHCP 类 ID。
/setclassid 修改 DHCP 类 ID。
/showclassid6 显示适配器允许的所有 IPv6 DHCP 类 ID。
/setclassid6 修改 IPv6 DHCP 类 ID。【使用技巧:】
ipconfig ... 显示信息
ipconfig /all ... 显示详细信息
ipconfig /renew ... 更新所有适配器
ipconfig /renew EL* ... 更新所有名称以 EL 开头的连接
ipconfig /allcompartments ... 显示有关所有分段的信息
-
使用范例1(查看本机IP)
-
使用范例2(查看MAC地址)
2.7.5、net-网络服务命令
【命令功能:】 net是庞大命令集,主要用于管理网络环境、服务、用户、登陆等信息内容
【命令格式:】 NET [ ACCOUNTS | COMPUTER | CONFIG | CONTINUE | FILE | GROUP | HELP | HELPMSG | LOCALGROUP | PAUSE | SESSION | SHARE | START | STATISTICS | STOP | TIME | USE | USER | VIEW ]
【常用选项:】
Net Accounts 更新用户帐号数据库、更改密码及所有帐号的登录要求;
Net Computer 从域数据库中添加或删除计算机;
Net Config 显示工作站或 Server 服务的配置信息;
Net Localgroup 添加、显示或更改本地组;
Net Start 启动服务,或显示已启动服务的列表;
Net Stop 停止服务(有些服务无法停止);
Net User 添加或更改用户帐号或显示用户帐号信息;
-
使用范例
2.7.6、netstat-显示网络状态
【命令功能:】 显示协议统计和当前 TCP/IP 网络连接
【命令格式:】 NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [interval]
【常用选项:】
-a 显示所有连接和侦听端口。
-b 显示在创建每个连接或侦听端口时涉及的可执行程序。在某些情况下,已知可执行程序承载多个独立的组件,这些情况下,显示创建连接或侦听端口时涉及的组件序列。此情况下,可执行程序的名称位于底部[]中,它调用的组件位于顶部,直至达到 TCP/IP。注意,此选项可能很耗时,并且在您没有足够权限时可能失败。
-e 显示以太网统计。此选项可以与 -s 选项结合使用。
-n 以数字形式显示地址和端口号。
-o 显示拥有的与每个连接关联的进程 ID。
-p proto 显示 proto 指定的协议的连接;proto 可以是下列任何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s 选项一起用来显示每个协议的统计,proto 可以是下列任何一个: IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP或 UDPv6。
-r 显示路由表。
-s 显示每个协议的统计。默认情况下,显示IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6的统计;-p 选项可用于指定默认的子网。
-t 显示当前连接卸载状态。
interval 重新显示选定的统计,各个显示间暂停的间隔秒数。按 CTRL+C 停止重新显示统计。如果省略,则 netstat将打印当前的配置信息一次。【使用技巧:】
常用netstat -an 查看端口的网络连接情况
-
使用范例(由于比较多,就筛选一部分显示)
端口说明:
1)协议
TCP:传输控制协议,传送数据需要建立连接
UDP:用户数据报协议,传送数据不需要先建立连接
2)本地地址和外部地址
2-1)0.0.0.0:135 0.0.0.0:0
0.0.0.0,代表的是匹配所有目标地址,也就是说对外部主机来说,它可以访问本地任意一个IP下的135端口的服务。
135端口:Microsoft的DCE RPC end-point mapper服务(即DCOM服务),为RPC通信提供一种服务端口的映射功能。
3389端口:远程桌面的服务端口。
2-2)127.0.0.1:54360 0.0.0.0:0
127.0.0.1仅在本地服务,外网无法访问。
2-3)192.168.0.101:4578 140.206.78.20:80
外网140.206.78.20:80主机可以访问本地192.168.0.101的4578端口。
3)状态
LISTENING-监听状态
ESTABLISHED-建立连接
2.7.7、nslookup-查找网络上域或主机IP
【命令功能:】 监测网络中DNS服务器是否能正确实现域名解析的命令行工具
【命令格式:】 nslookup [-opt ...] # 使用默认服务器的交互模式
nslookup [-opt ...] - server # 使用 "server" 的交互模式
nslookup [-opt ...] host # 仅查找使用默认服务器的 "host"
nslookup [-opt ...] host server # 仅查找使用 "server" 的 "host"【常用选项:】
type可以指定类型:
A -->地址记录
ATMA -->ATM地址记录
CNAME -->别名记录
NS --> 名字服务器记录
PTR ->反向记录【使用技巧:】
nslookup 域名 根据域名查IP
nslookup >set type=PTR> IP 可根据IP反查域名
-
使用范例
2.7.8、pathping-路由跟踪
【命令功能:】 路由跟踪工具,它将 ping 和 tracert 命令的功能和这两个工具所不提供的其他信息结合起来
【命令格式:】 pathping [-g host-list] [-h maximum_hops] [-i address] [-n]
[-p period] [-q num_queries] [-w timeout] [-4] [-6] target_name【常用选项:】
-g host-list 与主机列表一起的松散源路由。
-h maximum_hops 搜索目标的最大跃点数。
-i address 使用指定的源地址。
-n 不将地址解析成主机名。
-p period 两次 Ping 之间等待的时间(以毫秒为单位)。
-q num_queries 每个跃点的查询数。
-w timeout 每次回复等待的超时时间(以毫秒为单位)。
-4 强制使用 IPv4。
-6 强制使用 IPv6。
-
使用范例
2.7.9、ping-验证与远程计算机的连接
【命令功能:】 验证与远程计算机的连接
【命令格式:】 ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
[-r count] [-s count] [[-j host-list] | [-k host-list]]
[-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name【常用选项:】
-t Ping 指定的主机,直到停止。
若要查看统计信息并继续操作 - 请键入 Control-Break;
若要停止 - 请键入 Control-C。
-a 将地址解析成主机名。
-n count 要发送的回显请求数。
-l size 发送缓冲区大小。
-f 在数据包中设置“不分段”标志(仅适用于 IPv4)。
-i TTL 生存时间。
-v TOS 服务类型(仅适用于 IPv4。该设置已不赞成使用,且对IP标头中的服务字段类型没有任何影响)。
-r count 记录计数跃点的路由(仅适用于 IPv4)。
-s count 计数跃点的时间戳(仅适用于 IPv4)。
-j host-list 与主机列表一起的松散源路由(仅适用于 IPv4)。
-k host-list 与主机列表一起的严格源路由(仅适用于 IPv4)。
-w timeout 等待每次回复的超时时间(毫秒)。
-R 同样使用路由标头测试反向路由(仅适用于 IPv6)。
-S srcaddr 要使用的源地址。
-4 强制使用 IPv4。
-6 强制使用 IPv6。
【使用技巧:】
ping命令通常用来检测网络是否正常;
-
使用范例
2.7.10、route-操作网络路由表
【命令功能:】 操作网络路由表
【命令格式:】 ROUTE [-f] [-p] [-4|-6] command [destination]
[MASK netmask] [gateway] [METRIC metric] [IF interface]【常用选项:】
-f 清除所有网关项的路由表。如果与某个命令结合使用,在运行该命令前,应清除路由表。
-p 与 ADD 命令结合使用时,将路由设置为在系统引导期间保持不变。默认情况下,重新启动系统时,
不保存路由。忽略所有其他命令,这始终会影响相应的永久路由。Windows 95不支持此选项。
command 其中之一:
PRINT 打印路由
ADD 添加路由
DELETE 删除路由
CHANGE 修改现有路由
destination 指定主机。
MASK 指定下一个参数为“网络掩码”值。
netmask 指定此路由项的子网掩码值。如果未指定,其默认设置为 255.255.255.255。
gateway 指定网关。
interface 指定路由的接口号码。
METRIC 指定跃点数,例如目标的成本。
2.7.11、telnet-远程登录服务
【命令功能:】 telnet是teletype network缩写,是远程登录服务的标准协议,telnet可以让用户在本地telnet客户端上远端登录到远程Telnet服务器上。
【命令格式:】 telnet [-a][-e escape char][-f log file][-l user][-t term][host [port]]
【常用选项:】
-a 企图自动登录。除了用当前已登陆的用户名以外,与 -l 选项相同。
-e 跳过字符来进入 telnet 客户端提示。
-f 客户端登录的文件名。
-l 指定远程系统上登录用的用户名称。要求远程系统支持 TELNET ENVIRON 选项。
host 指定要连接的远程计算机的主机名或 IP 地址。
port 指定端口号或服务名。
【使用技巧:】
如出现:'telnet' 不是内部或外部命令,也不是可运行的程序或批处理文件。是因为Telnet客户端默认是关闭的。
我们可以进入:控制面板-程序和功能-打开或关闭Windows功能-勾选上Telnet客户端
telnet ip:port可用于检测端口是否能正常访问。
2.7.12、tracert-跟踪路由
【命令功能:】 跟踪网络连接的一个命令,能把数据包到达目标主机所经过的路径以及在每个结点上花费的时间显示出来。
【命令格式:】 tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name
【常用选项:】
-d 不将地址解析成主机名。
-h maximum_hops 搜索目标的最大跃点数。
-j host-list 与主机列表一起的松散源路由(仅适用于 IPv4)。
-w timeout 等待每个回复的超时时间(以毫秒为单位)。
-R 跟踪往返行程路径(仅适用于 IPv6)。
-S srcaddr 要使用的源地址(仅适用于 IPv6)。
-4 强制使用 IPv4。
-6 强制使用 IPv6。【使用技巧:】命令用IP生存时间TTL字段和ICMP错误信息来确定从一个主机到网络上其他主机之间的路由。
-
使用范例
2.8、其他命令
2.8.1、color-设置控制台前景和背景颜色
【命令功能:】 设置默认的控制台前景和背景颜色
【命令格式:】 COLOR [attr]
【常用选项:】
attr 指定控制台输出的颜色属性
颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一:0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 浅绿色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
-
使用范例1-(只有一个值,则为前景色)
-
使用范例2-(有两位,则第一位为背景,第二位为前景)
2.8.2、for-循环
【命令功能:】 对一组文件中的每一个文件执行某个特定命令
【命令格式:】 FOR %variable IN (set) DO command [command-parameters]
FOR /D %variable IN (set) DO command [command-parameters]
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
FOR /L %variable IN (start,step,end) DO command [command-parameters]
FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
【常用选项:】
%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters 为特定命令指定参数或命令行开关。
/D 指定与目录名匹配,而不与文件名匹配
/R 检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。
/L 该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生序列 (5 4 3 2 1)。
/F 迭代及文件解析。
"options" 包括一个或多个指定不同解析选项的关键字:
eol=c - 指一个行注释字符的结尾(就一个)
skip=n - 指在文件开始时忽略的行数。
delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。
tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。m-n
格式为一个范围。通过 nth 符号指定 mth。如果符号字符串中的最后一个字符星号,那么额 外的变量将在最后一个符号解析之后分配并接受行的保留文本。经测试,该参数最多只能区分 31 个字段。
usebackq - 使用后引号(键盘上数字 1 左面的那个键`)。未使用参数 usebackq 时:file-set 表示文件, 但不能含有空格双引号表示字符串,即"string" 单引号表示执行命令,即'command' 使用参数 usebackq 时:file-set 和"file-set"都表示文件当文件路径或名称中有空格时,就可以用双引 号括起来单引号表示字符串,即'string' 后引号表示命令执行,即`command`。
【使用技巧:】
另外,FOR 变量参照的替换已被增强。您现在可以使用下列选项语法:
%~I - 删除任何引号("),扩展 %I
%~fI - 将 %I 扩展到一个完全合格的路径名
%~dI - 仅将 %I 扩展到一个驱动器号
%~pI - 仅将 %I 扩展到一个路径
%~nI - 仅将 %I 扩展到一个文件名
%~xI - 仅将 %I 扩展到一个文件扩展名
%~sI - 扩展的路径只含有短名
%~aI - 将 %I 扩展到文件的文件属性
%~tI - 将 %I 扩展到文件的日期/时间
%~zI - 将 %I 扩展到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展到找到的第一个完全合格的名称。如果环境变量名
未被定义,或者没有找到文件,此组合键会扩展到空字符串
-
使用范例1-基本用法
-
使用范例2-命令扩展
-
使用范例3-/F扩展
2.8.3、goto-跳转
【命令功能:】 将 cmd.exe 定向到批处理程序中带标签的行。
【命令格式:】 GOTO label
【常用选项:】
label 指定批处理程序中用作标签的文字字符串。
-
使用范例
:: goto.bat@echo offset /p input=请输入字母a或b:if "%input%"=="a" goto aif "%input%"=="b" goto bpauseexit:aecho 您输入的字母是apause > nulexit:becho 您输入的字母是bpause > nulexit
2.8.4、if-条件判断语句
【命令功能:】 执行批处理程序中的条件处理
【命令格式:】 IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
【常用选项:】
NOT 指定只有条件为 false 的情况下,Windows 才应该执行该命令。
ERRORLEVEL number 如果最后运行的程序返回一个等于或大于指定数字的退出代码,指定条件为 true。
string1==string2 如果指定的文字字符串匹配,指定条件为 true。
EXIST filename 如果指定的文件名存在,指定条件为 true。
command 如果符合条件,指定要执行的命令。如果指定的条件为 FALSE,命令后可跟 ELSE 命令,该命令将在 ELSE 关键字之后执行该命令。
-
使用范例1-ERRORLEVEL
:: ERRORLEVEL.bat ERRORLEVEL是内置的环境变量(0-命令执行成功,非0命令执行错误)
@echo off
net view
IF ERRORLEVEL 0 echo net view %ERRORLEVEL%
net user >nul
if %ERRORLEVEL% == 0 echo net user %ERRORLEVEL%
pause
注:IF ERRORLEVEL 0代表前面命令执行结果大于等于0,所以通常应该这样写if %ERRORLEVEL% == 0来表示上一行命令执行成功。
-
使用范例2-string
:: ifstring.bat@echo offset str1=okset str2=errorif defined str1 echo str1 = %str1%if defined str3 (echo str3) else echo %str2% : str3 没有定义pause > nul
-
使用范例3-exist
:: ifTest.bat@echo offif exist C:\cmdTest\d (echo 目录已存在)^else ( md C:\cmdTest\d if exist C:\cmdTest\d echo C:\cmdTest\d 目录创建成功) pause > nul
注:^为续行
2.8.5、pause-暂停批处理程序
【命令功能:】 暂停批处理程序,并显示以下消息:请按任意键继续. . .
【使用技巧:】
要显示其他提示语,可以这样用:echo 其他提示语 & pause > nul
2.8.6、set-显示、设置或删除cmd.exe环境变量
【命令功能:】 显示、设置或删除cmd.exe环境变量
【命令格式:】 SET [variable=[string]]
SET /A expression
SET /P variable=[promptString]
【常用选项:】
variable 指定环境变量名。
string 指定要指派给变量的一系列字符串。
/A 命令行开关指定等号右边的字符串为被评估的数字表达式。
! ~ - -一元运算符
* / % -算数运算符
+ - -算数运算符
<< >> -二进制逻辑移位
& -二进制按位“与”
...
/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入行之前,显示指定的 promptString。promptString 可以是空的。
【使用技巧:】
set中冒号+~符号(:~)表示截取字符串。
-
使用范例
:: set.bat
@echo off
set /p input=请输入算数表达式(例如1+1):
set /a var=%input%
echo 结算结果:%input%=%var%
pause
2.8.7、start-调用外部程序
【命令功能:】 启动一个单独的窗口运行指定的程序或命令
【命令格式:】 START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE] [/AFFINITY ] [/WAIT] [/B]
[command/program] [parameters]【常用选项:】
"title" 在窗口标题栏中显示的标题。
path 启动目录。
B 启动应用程序,但不创建新窗口。应用程序已忽略 ^C 处理。
除非应用程序启用 ^C 处理,否则 ^Break 是唯一可以中断该应用程序的方式。
I 新的环境将是传递给 cmd.exe 的原始环境,而不是当前环境。
MIN 以最小化方式启动窗口。
MAX 以最大化方式启动窗口。
NORMAL 在 NORMAL 优先级类中启动应用程序。
HIGH 在 HIGH 优先级类中启动应用程序。
command/program
如果它是内部 cmd 命令或批文件,则该命令处理器是使用
cmd.exe 的 /K 开关运行的。这表示运行该命令之后,该窗口将仍然存在。
如果它不是内部 cmd 命令或批文件,则它就是一个程序,并将
作为一个窗口化应用程序或控制台应用程序运行。
parameters 这些是传递给 command/program 的参数
【使用技巧:】
start explorer d:\ 打开d盘
start snippingtool 打开截图工具
2.8.8、dos命令特殊符号
【命令功能:】 dos命令特殊符号
【常用选项:】
@ 命令行回显屏蔽符,关闭当前行的回显,比如:@echo off
% 批处理变量引导符:
引用变量:%var%
调用程序外部参数用%1至%9,%0 批处理文件本身,包括完整的路径和扩展名
> 重定向符,将输出的内容重定向到指定位置
>> 重定向符(追加),将输出的内容追加到指定位置
< 重定向符,从指定位置输入内容
>& 重定向符,将一个句柄的输出写入到另一个句柄的输入中
<& 重定向符,从一个句柄读取输入并将其写入到另一个句柄输出中
| 命令管道符,例如:【第一条命令 | 第二条命令】将第一条命令的结果作为第二条命令的参数来使用
^ 转义字符,除了转义还可以起到续行的作用
& 组合命令,无论前面的命令是否成功执行,也都会执行后面的
&& 组合命令,当前面的命令成功执行,再执行后面的命令
|| 组合命令,当前面的命令没有成功执行,则执行后面的命令
"" 字符串界定符,允许有特殊字符(如:空格)
, 逗号,相当于空格,例如:dir,c:\
; 分号,当命令相同时,可以将不同目标用;来隔离
! 感叹号,在变量延迟问题中,用来表示变量,即%var%应该表示为!var!
() 括号,将命令视作整体
关于dos命令还有很多,这里仅选择了一些比较常用的命令。
3、批处理命令练习
3.1、模拟进度条
:: 进度条.bat@echo off :: mode con设置窗口大小,color A 设置前景色mode con cols=95 lines=15 &color A cls :: 回车echo. echo 程序正在初始化. . . echo. echo ┌──────────────────────────────────────┐ set/p=■nul echo 100%% echo └──────────────────────────────────────┘echo 已加载完成!& pause > nul
3.2、倒序输出
::倒序输出.bat@echo off :starset output=set /p input=请输入::loopif not "%input%"=="" (set output=%output%%input:~-1%set input=%input:~0,-1%goto :loop)echo.if defined output ( echo %output%)else echo 未入内容pause >nul&goto :Star
3.3、输出打字机效果
:: 输出打字机效果.bat@echo off mode con cols=80 lines=13rem 开启变量延迟setlocal enabledelayedexpansion set str=床前明月光 疑是地上霜 举头望明月 低头思故乡rem 定义字符串 str ,在批处理中使用双百分号for %%i in (%str%) do ( rem 以空格为分隔符将 str 分成4行显示,每行赋值给%%i。 set char=%%i echo. echo. for /l %%j in (0,1,5) do ( rem 在批处理中使用!替代%%,表示延迟。截取变量char中第%%j处的1个字符 set/p=!char:~%%j,1!nul ) ) pause>nul
来源地址:https://blog.csdn.net/xiaoxianer321/article/details/127482227