一篇文章带你读懂批处理命令
回复“书籍”即可获赠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、UDP :
UDPv6。
显示路由表。
显示每个协议的统计。默认情况下,显示
和 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 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] :
\\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学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
/今日留言主题/
随便说一两句吧~~