一篇文章带你读懂批处理命令
回复“书籍”即可获赠Python从入门到进阶共10本电子书
批处理,顾名思义,批量处理,它可以将复杂的事情变得简单,最早出现在dos操作系统中,也就是我们经常说的cmd黑窗口,这在早期没有gui界面的时候用的是最多的,而且命令比较丰富,虽然现在有很多功能都被封装到了软件中,但是你会发现在dos中执行操作会更快,哪怕会比较麻烦,如果你无法忍受慢节奏。
下面就基本命令咱们先看看吧,首先打开cmd窗口:
你可以通过 快捷键 徽标键+R,然后输入cmd,也可以点击window系统右下角,然后点击运行,输入cmd即可。
下面我们来看看吧:

打开后可以看到这幅画面,我们可以对他进行一些操作,让他看起来 炫酷一点。
我们先看看怎样操作, 打开属性对话框:



最后我们就得到了这样一个窗口,比以前的是不是要炫酷一点了,哈哈哈哈。
那么dos 里面到底有哪些命令呢?下面我们来看看:

这样就获取到了一部分dos操作系统的命令,也是可以进行批量处理的命令,所以我们形象的称之为批处理脚本。那么这些命令都是怎样使用的了。
一、显示,暂停,清除,注释
1.echo 输出信息

2.pause 暂停

不信,你可以看看这个:

cls 清除

清除之后他是没有任何显示的,清除即清空前面的所有内容。
4.rem 注释

另外 :: 也可以起到 rem 的注释作用, 而且更简洁有效。
二、文件目录操作
1. cd 切换目录

2. md 创建文件夹


3. ren重命名

4. move移动文件(夹)

5. del 删除文件

6. copy xcopy 复制文件


很多人觉得这两个用法一样,其实不一样的,当你复制超大型文件时,我想每个人基本都会遇到复制缓慢的尴尬,如果你善用dos命令,可以让你把效率提高至少十倍。copy本身比系统的复制要快,但xcopy更快。
7.dir 列举文件名
可以打印出当前目录所有文件(夹)名

8. 文件属性

三、网络命令
1.net 显示设置网络用户组账号
此命令的语法是:NET[ ACCOUNTS | COMPUTER | CONFIG | CONTINUE | FILE | GROUP | HELP |HELPMSG | LOCALGROUP | PAUSE | SESSION | SHARE | START |STATISTICS | STOP | TIME | USE | USER | VIEW ]
2.netstat 显示协议统计和当前 TCP/IP 网络连接
NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [interval]显示所有连接和侦听端口。显示在创建每个连接或侦听端口时涉及的可执行程序。在某些情况下,已知可执行程序承载多个独立的组件,这些情况下,显示创建连接或侦听端口时涉及的组件序列。此情况下,可执行程序的名称位于底部[]中,它调用的组件位于顶部,直至达TCP/IP。注意,此选项可能很耗时,并且在您没有足够权限时可能失败。显示以太网统计。此选项可以与 -s 选项结合使用。显示外部地址的完全限定域名(FQDN)。以数字形式显示地址和端口号。显示拥有的与每个连接关联的进程 ID。proto 显示 proto 指定的协议的连接;proto 可以是下列任: TCP、UDP、TCPv6 或 UDPv6。如果与 -s 选可以是下列任: IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDPUDPv6。显示路由表。显示每个协议的统计。默认情况下,显示和 UDPv6选项可用于指定默认的子网。显示当前连接卸载状态。interval 重新显示选定的统计,各个显示间暂停的间隔秒数。CTRL+C 停止重新显示统计。如果省略,则 netstat将打印当前的配置信息一次。
3.ping 测试IP连接
用法: 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。
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] ]其中adapter 连接名称(允许使用通配符 * 和 ?,参见示例)选项:/? 显示此帮助消息/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。默认情况下,仅显示绑定到 TCP/IP 的适配器的 IP 地址、子网掩码和默认网关。对于 Release 和 Renew,如果未指定适配器名称,则会释放或更新所有绑定到 TCP/IP 的适配器的 IP 地址租约。对于 Setclassid 和 Setclassid6,如果未指定 ClassId,则会删除 ClassId。示例:> ipconfig ... 显示信息> ipconfig /all ... 显示详细信息> ipconfig /renew ... 更新所有适配器> ipconfig /renew EL* ... 更新所有名称以 EL 开头的连接> ipconfig /release *Con* ... 释放所有匹配的连接,例如 "Local Area Connection 1" 或"Local Area Connection 2"> ipconfig /allcompartments ... 显示有关所有分段的信息> ipconfig /allcompartments /all ... 显示有关所有分段的详细信息
5.arp 地址转换协议
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 表。
6.route 网络路由表
ROUTE [-f] [-p] [-4|-6] command [destination][MASK netmask] [gateway] [METRIC metric] [IF interface]-f 清除所有网关项的路由表。如果与某个命令结合使用,在运行该命令前,应清除路由表。-p 与 ADD 命令结合使用时,将路由设置为在系统引导期间保持不变。默认情况下,重新启动系统时,不保存路由。忽略所有其他命令,这始终会影响相应的永久路由。Windows 95不支持此选项。-4 强制使用 IPv4。-6 强制使用 IPv6。command 其中之一:PRINT 打印路由ADD 添加路由DELETE 删除路由CHANGE 修改现有路由destination 指定主机。MASK 指定下一个参数为“网络掩码”值。netmask 指定此路由项的子网掩码值。如果未指定,其默认设置为 255.255.255.255。gateway 指定网关。interface 指定路由的接口号码。METRIC 指定跃点数,例如目标的成本。用于目标的所有符号名都可以在网络数据库文件 NETWORKS 中进行查找。用于网关的符号名称都可以在主机名称数据库文件 HOSTS 中进行查找。如果命令为 PRINT 或 DELETE。目标或网关可以为通配符,(通配符指定为星号“*”),否则可能会忽略网关参数。如果 Dest 包含一个 * 或 ?,则会将其视为 Shell 模式,并且只打印匹配目标路由。“*”匹配任意字符串,而“?”匹配任意一个字符。示例: 157.*.1、157.*、127.*、*224*。只有在 PRINT 命令中才允许模式匹配。诊断信息注释:无效的 MASK 产生错误,即当 (DEST & MASK) != DEST 时。示例: > route ADD 157.0.0.0 MASK 155.0.0.0 157.55.80.1 IF 1路由添加失败: 指定的掩码参数无效。(Destination & Mask) != Destination。示例:> route PRINT> route PRINT -4> route PRINT -6> route PRINT 157* .... 只打印那些匹配 157* 的项> route ADD 157.0.0.0 MASK 255.0.0.0 157.55.80.1 METRIC 3 IF 2destination^ ^mask ^gateway metric^ ^Interface^如果未给出 IF,它将尝试查找给定网关的最佳接口。> route ADD 3ffe::/32 3ffe::1> route CHANGE 157.0.0.0 MASK 255.0.0.0 157.55.80.5 METRIC 2 IF 2CHANGE 只用于修改网关和/或跃点数。> route DELETE 157.0.0.0> route DELETE 3ffe::/32
7.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。
四、系统命令
1.taskkill 查杀进程
TASKKILL [/S system [/U username [/P [password]]]]{ [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]描述:使用该工具按照进程 ID (PID) 或映像名称终止任务。参数列表:/S system 指定要连接的远程系统。/U [domain\]user 指定应该在哪个用户上下文执行这个命令。/P [password] 为提供的用户上下文指定密码。如果忽略,提示输入。/FI filter 应用筛选器以选择一组任务。允许使用 "*"。例如,映像名称 eq acme*/PID processid 指定要终止的进程的 PID。使用 TaskList 取得 PID。/IM imagename 指定要终止的进程的映像名称。通配符 '*'可用来指定所有任务或映像名称。/T 终止指定的进程和由它启用的子进程。/F 指定强制终止进程。/? 显示帮助消息。筛选器:筛选器名 有效运算符 有效值----------- --------------- -------------------------STATUS eq, ne RUNNING |NOT RESPONDING | UNKNOWNIMAGENAME eq, ne 映像名称PID eq, ne, gt, lt, ge, le PID 值SESSION eq, ne, gt, lt, ge, le 会话编号。CPUTIME eq, ne, gt, lt, ge, le CPU 时间,格式为hh:mm:ss。hh - 时,mm - 分,ss - 秒MEMUSAGE eq, ne, gt, lt, ge, le 内存使用量,单位为 KBUSERNAME eq, ne 用户名,格式为 [domain\]userMODULES eq, ne DLL 名称SERVICES eq, ne 服务名称WINDOWTITLE eq, ne 窗口标题说明----1) 只有在应用筛选器的情况下,/IM 切换才能使用通配符 '*'。2) 远程进程总是要强行 (/F) 终止。3) 当指定远程机器时,不支持 "WINDOWTITLE" 和 "STATUS" 筛选器。例如:TASKKILL /IM notepad.exeTASKKILL /PID 1230 /PID 1241 /PID 1253 /TTASKKILL /F /IM cmd.exe /TTASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exeTASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"
2.shutdown 关闭或者重启计算机
: shutdown [/i | /l | /s | /r | /g | /a | /p | /h | /e] [/f]\\computer][/t xxx][/d [p|u:]xx:yy [/c "comment"]]显示帮助。这与键入 /? 是一样的。显示帮助。这与不键入任何选项是一样的。显示图形用户界面(GUI)。这必须是第一个选项。注销。这不能与 /m 或 /d 选项一起使用。关闭计算机。关闭并重新启动计算机。关闭并重新启动计算机。系统重新启动后,重新启动所有注册的应用程序。中止系统关闭。这只能在超时期间使用。关闭本地计算机,没有超时或警告。/d 和 /f 选项一起使用。休眠本地计算机。/f 选项一起使用。记录计算机意外关闭的原因。\\computer 指定目标计算机。xxx 设置关闭前的超时为 xxx 秒。0-315360000 (10 年),默认值为 30。0,则默示 /f参数。"comment" 重启动或关闭的原因的注释。512 个字符。强制正在运行的应用程序关闭,不前台警告用户。/t 参数指定大于 0 的值时,/f 参数。[p|u:]xx:yy 提供重新启动或关机的原因。p 表明重新启动或关闭是计划内的。u 表示原因由用户定义。p 和 u 均未指定,则是计划外重新启动或关闭。xx 是主要原因号(小于 256 的正整数)。yy 是次要原因号(小于 65536 的正整数)。:= 预期 U = 意外 P = 计划内,C = 自定义)主要 次要 标题U 0 0 其他(计划外)E 0 0 其他(计划外)E P 0 0 其他(计划内)U 0 5 其他故障: 系统没有反应E 1 1 硬件: 维护(计划外)E P 1 1 硬件: 维护(计划内)E 1 2 硬件: 安装(计划外)E P 1 2 硬件: 安装(计划内)E 2 2 操作系统: 恢复(计划内)E P 2 2 操作系统: 恢复(计划内)P 2 3 操作系统: 升级(计划内)E 2 4 操作系统: 重新配置(计划外)E P 2 4 操作系统: 重新配置(计划内)P 2 16 操作系统: Service Pack (计划内)2 17 操作系统: 热修补(计划外)P 2 17 操作系统: 热修补(计划内)2 18 操作系统: 安全修补(计划外)P 2 18 操作系统: 安全修补(计划内)E 4 1 应用程序: 维护(计划外)E P 4 1 应用程序: 维护(计划内)E P 4 2 应用程序: 安装(计划内)E 4 5 应用程序: 没有反应E 4 6 应用程序: 不稳定U 5 15 系统故障: 停止错误U 5 19 安全问题E 5 19 安全问题E P 5 19 安全问题E 5 20 网络连接丢失(计划外)U 6 11 电源故障: 电线被拔掉U 6 12 电源故障: 环境P 7 0 旧版 API 关机
3.start 启动命令
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED][/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL][/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B][command/program] [parameters]"title" 在窗口标题栏中显示的标题。path 启动目录。B 启动应用程序,但不创建新窗口。应用程序已忽略 ^C 处理。除非应用程序启用 ^C 处理,否则 ^Break 是唯一可以中断该应用程序的方式。I 新的环境将是传递给 cmd.exe 的原始环境,而不是当前环境。MIN 以最小化方式启动窗口。MAX 以最大化方式启动窗口。SEPARATE 在单独的内存空间中启动 16 位 Windows 程序。SHARED 在共享内存空间中启动 16 位 Windows 程序。LOW 在 IDLE 优先级类中启动应用程序。NORMAL 在 NORMAL 优先级类中启动应用程序。HIGH 在 HIGH 优先级类中启动应用程序。REALTIME 在 REALTIME 优先级类中启动应用程序。ABOVENORMAL 在 ABOVENORMAL 优先级类中启动应用程序。BELOWNORMAL 在 BELOWNORMAL 优先级类中启动应用程序。NODE 将首选非一致性内存结构 (NUMA) 节点指定为十进制整数。AFFINITY 将处理器关联掩码指定为十六进制数字。进程被限制在这些处理器上运行。当 /AFFINITY 和 /NODE 结合时,会对关联掩码进行不同的解释。指定关联掩码,正如 NUMA 节点的处理器掩码正确移动到零位起始位置一样。进程被限制在指定关联掩码和 NUMA 节点之间的那些通用处理器上运行。如果没有通用处理器,则进程被限制在指定的 NUMA 节点上运行。WAIT 启动应用程序并等待它终止。command/program如果它是内部 cmd 命令或批文件,则该命令处理器是使用cmd.exe 的 /K 开关运行的。这表示运行该命令之后,该窗口将仍然存在。如果它不是内部 cmd 命令或批文件,则它就是一个程序,并将作为一个窗口化应用程序或控制台应用程序运行。parameters 这些是传递给 command/program 的参数。意: 在 64 位平台上不支持 SEPARATE 和 SHARED 选项。过指定 /NODE,可按照利用 NUMA 系统中的内存区域的方式创建进程。例如,以创建两个完全通过共享内存互相通信的进程以共享相同的首选 NUMA 节点,而最大限度地减少内存延迟。如有可能,它们即会分配来自相同 NUMA 节点的存,并且会在指定节点之外的处理器上自由运行。启动 /NODE 1 application1.exe启动 /NODE 1 application2.exe两个进程可被进一步限制在相同 NUMA 节点内的指定处理器上运行。在以下例中, application1 在节点的两个低顺序处理器上运行,而 application2该节点的其后两个处理器上运行。该示例假定指定节点至少具有四个逻辑理器。请注意,节点号可更改为该计算机的任何有效节点号,而无需更改关联码。启动 /NODE 1 /AFFINITY 0x3 application1.exe启动 /NODE 1 /AFFINITY 0xc application2.exe果命令扩展被启用,通过命令行或 START 命令的外部命令用会如下改变:文件名作为命令键入,非可执行文件可以通过文件关联调用。(例如,WORD.DOC 会调用跟 .DOC 文件扩展名关联的应用程序)。关于如何从命令脚本内部创建这些关联,请参阅 ASSOC 和FTYPE 命令。行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示符。如果在命令脚本内执行,该新行为则不会发生。果执行的命令行的第一个符号是不带扩展名或路径修饰符的字符串 "CMD","CMD" 会被 COMSPEC 变量的数值所替换。这防止从当前目录提取 CMD.EXE。果执行的命令行的第一个符号没有扩展名,CMD.EXE 会使用PATHEXT 环境变量的数值来决定要以什么顺序寻找哪些扩展名。PATHEXT 变量的默认值是:.COM;.EXE;.BAT;.CMD请注意,该语法跟 PATH 变量的一样,分号隔开不同的元素。找可执行文件时,如果没有相配的扩展名,看一看该名称是否目录名相配。如果确实如此,START 会在那个路径上调用lorer。如果从命令行执行,则等同于对那个路径作 CD /D。
讲了这么多基础语句是不是想跃跃欲试嘞嘞,其实批处理中还有很多比较高级的东西,比如说循环判断,set设置,下面一起来看看吧。
1.if语句
if语句大家都知道,基本就是用作判断,比如两个数是否相同,一个变量是否存在。它的用法如下:

大家可以看到,这样就完成了一段非常智障的判断语句,哈哈哈。了解了这个简单的语法后,我们是不是该整点新鲜的东西了,比如说变量啥的,下面请看:

可以看到使用关键字set定义变量就完成了交互操作,赋值。
说完了判断,变量,当然还有循环啦,for 循环相信大家都不陌生,在哪里都有它的身影,dos也不例外。
不过貌似这个for语句的话操作起来在cmd窗口中和在批处理文件中结果不一样哦,具体表现为前者需要在变量前加一个%,后者则是两个%%。for语句里有三个关键字 for 、in、do 三者缺一不可。

怎么样,是不是超级简单。当然,它还有很多有趣的地方,比如你想查看某个目录的所有文件:

这样就打印出了当前桌面目录中所有的txt文件。
好了,今天就讲到这里,更多精彩内容期待你的参与。
------------------- End -------------------
往期精彩文章推荐:

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
/今日留言主题/
随便说一两句吧~~
