置酒长安道,同心与我违。

    批处理,顾名思义,批量处理,它可以将复杂的事情变得简单,最早出现在dos操作系统中,也就是我们经常说的cmd黑窗口,这在早期没有gui界面的时候用的是最多的,而且命令比较丰富,虽然现在有很多功能都被封装到了软件中,但是你会发现在dos中执行操作会更快,哪怕会比较麻烦,如果你无法忍受慢节奏。

下面就基本命令咱们先看看吧,首先打开cmd窗口:

你可以通过 快捷键 徽标键+R,然后输入cmd,也可以点击window系统右下角,然后点击运行,输入cmd即可。

下面我们来看看吧:

一篇文章带你读懂批处理命令_python

打开后可以看到这幅画面,我们可以对他进行一些操作,让他看起来 炫酷一点。

我们先看看怎样操作, 打开属性对话框:

一篇文章带你读懂批处理命令_python_02

一篇文章带你读懂批处理命令_python_03

一篇文章带你读懂批处理命令_python_04

最后我们就得到了这样一个窗口,比以前的是不是要炫酷一点了,哈哈哈哈。

那么dos 里面到底有哪些命令呢?下面我们来看看:

一篇文章带你读懂批处理命令_python_05

这样就获取到了一部分dos操作系统的命令,也是可以进行批量处理的命令,所以我们形象的称之为批处理脚本。那么这些命令都是怎样使用的了。

一、显示,暂停,清除,注释

1.echo 输出信息

一篇文章带你读懂批处理命令_python_06

2.pause 暂停

一篇文章带你读懂批处理命令_python_07

不信,你可以看看这个:

一篇文章带你读懂批处理命令_python_08

  1. cls 清除

一篇文章带你读懂批处理命令_python_09

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

4.rem 注释

一篇文章带你读懂批处理命令_python_10

另外 :: 也可以起到 rem 的注释作用,  而且更简洁有效。

二、文件目录操作

1. cd 切换目录

一篇文章带你读懂批处理命令_python_11

2. md 创建文件夹

一篇文章带你读懂批处理命令_python_12

一篇文章带你读懂批处理命令_python_13

3. ren重命名

一篇文章带你读懂批处理命令_python_14

4. move移动文件(夹)

一篇文章带你读懂批处理命令_python_15

 

5. del 删除文件

一篇文章带你读懂批处理命令_python_16

6. copy  xcopy 复制文件

一篇文章带你读懂批处理命令_python_17

一篇文章带你读懂批处理命令_python_18

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

7.dir 列举文件名

可以打印出当前目录所有文件(夹)名

一篇文章带你读懂批处理命令_python_19

8. 文件属性

一篇文章带你读懂批处理命令_python_20

三、网络命令

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]
-a 显示所有连接和侦听端口。 -b 显示在创建每个连接或侦听端口时涉及的可执行程序。 在某些情况下,已知可执行程序承载多个独立的 组件,这些情况下,显示创建连接或侦听端口时涉 及的组件序列。此情况下,可执行程序的名称 位于底部[]中,它调用的组件位于顶部,直至达 到 TCP/IP。注意,此选项可能很耗时,并且在您没有 足够权限时可能失败。 -e 显示以太网统计。此选项可以与 -s 选项结合使用。 -f 显示外部地址的完全限定域名(FQDN)。 -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 将打印当前的配置信息一次。

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 2 destination^ ^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 2
CHANGE 只用于修改网关和/或跃点数。
> 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 | UNKNOWN IMAGENAME 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 内存使用量,单位为 KB USERNAME eq, ne 用户名,格式为 [domain\]user MODULES eq, ne DLL 名称 SERVICES eq, ne 服务名称 WINDOWTITLE eq, ne 窗口标题
说明 ---- 1) 只有在应用筛选器的情况下,/IM 切换才能使用通配符 '*'。 2) 远程进程总是要强行 (/F) 终止。 3) 当指定远程机器时,不支持 "WINDOWTITLE" 和 "STATUS" 筛选器。
例如: TASKKILL /IM notepad.exe TASKKILL /PID 1230 /PID 1241 /PID 1253 /T TASKKILL /F /IM cmd.exe /T TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*" TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe TASKKILL /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]    [/m \\computer][/t xxx][/d [p|u:]xx:yy [/c "comment"]]
没有参数 显示帮助。这与键入 /? 是一样的。 /? 显示帮助。这与不键入任何选项是一样的。 /i 显示图形用户界面(GUI)。 这必须是第一个选项。 /l 注销。这不能与 /m 或 /d 选项一起使用。 /s 关闭计算机。 /r 关闭并重新启动计算机。 /g 关闭并重新启动计算机。系统重新启动后, 重新启动所有注册的应用程序。 /a 中止系统关闭。 这只能在超时期间使用。 /p 关闭本地计算机,没有超时或警告。 可以与 /d 和 /f 选项一起使用。 /h 休眠本地计算机。 可以与 /f 选项一起使用。 /e 记录计算机意外关闭的原因。 /m \\computer 指定目标计算机。 /t xxx 设置关闭前的超时为 xxx 秒。 有效范围是 0-315360000 (10 年),默认值为 30。 如果超时时间大于 0,则默示 /f 参数。 /c "comment" 重启动或关闭的原因的注释。 最多允许 512 个字符。 /f 强制正在运行的应用程序关闭,不前台警告用户。 当为 /t 参数指定大于 0 的值时, 则默示 /f 参数。 /d [p|u:]xx:yy 提供重新启动或关机的原因。 p 表明重新启动或关闭是计划内的。 u 表示原因由用户定义。 如果 p 和 u 均未指定,则是计划外重新启动 或关闭。 xx 是主要原因号(小于 256 的正整数)。 yy 是次要原因号(小于 65536 的正整数)。
此计算机上的原因:(E = 预期 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语句大家都知道,基本就是用作判断,比如两个数是否相同,一个变量是否存在。它的用法如下:

一篇文章带你读懂批处理命令_python_21

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

一篇文章带你读懂批处理命令_python_22

可以看到使用关键字set定义变量就完成了交互操作,赋值。

说完了判断,变量,当然还有循环啦,for 循环相信大家都不陌生,在哪里都有它的身影,dos也不例外。

不过貌似这个for语句的话操作起来在cmd窗口中和在批处理文件中结果不一样哦,具体表现为前者需要在变量前加一个%,后者则是两个%%。for语句里有三个关键字 for 、in、do  三者缺一不可。

一篇文章带你读懂批处理命令_python_23

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

一篇文章带你读懂批处理命令_python_24

这样就打印出了当前桌面目录中所有的txt文件。

好了,今天就讲到这里,更多精彩内容期待你的参与。

------------------- End -------------------