批处理,顾名思义,批量处理,它可以将复杂的事情变得简单,最早出现在dos操作系统中,也就是我们经常说的cmd黑窗口,这在早期没有gui界面的时候用的是最多的,而且命令比较丰富,虽然现在有很多功能都被封装到了软件中,但是你会发现在dos中执行操作会更快,哪怕会比较麻烦,如果你无法忍受慢节奏。
下面就基本命令咱们先看看吧,首先打开cmd窗口:
你可以通过 快捷键 徽标键+R,然后输入cmd,也可以点击window系统右下角,然后点击运行,输入cmd即可。
下面我们来看看吧:
打开后可以看到这幅画面,我们可以对他进行一些操作,让他看起来 炫酷一点。
我们先看看怎样操作, 打开属性对话框:
最后我们就得到了这样一个窗口,比以前的是不是要炫酷一点了,哈哈哈哈。
那么dos 里面到底有哪些命令呢?下面我们来看看:
这样就获取到了一部分dos操作系统的命令,也是可以进行批量处理的命令,所以我们形象的称之为批处理脚本。那么这些命令都是怎样使用的了。
一、显示,暂停,清除,注释
1.echo 输出信息
2.pause 暂停
不信,你可以看看这个:
3.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]
- -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语句大家都知道,基本就是用作判断,比如两个数是否相同,一个变量是否存在。它的用法如下:
大家可以看到,这样就完成了一段非常智障的判断语句,哈哈哈。了解了这个简单的语法后,我们是不是该整点新鲜的东西了,比如说变量啥的,下面请看:
可以看到使用关键字set定义变量就完成了交互操作,赋值。
说完了判断,变量,当然还有循环啦,for 循环相信大家都不陌生,在哪里都有它的身影,dos也不例外。
不过貌似这个for语句的话操作起来在cmd窗口中和在批处理文件中结果不一样哦,具体表现为前者需要在变量前加一个%,后者则是两个%%。for语句里有三个关键字 for 、in、do 三者缺一不可。
怎么样,是不是超级简单。当然,它还有很多有趣的地方,比如你想查看某个目录的所有文件:
这样就打印出了当前桌面目录中所有的txt文件。
好了,今天就讲到这里,更多精彩内容期待你的参与。