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

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

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

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

下面我们来看看吧:

图片

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

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

图片

图片

图片

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

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

图片

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

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

1.echo 输出信息

图片

2.pause 暂停

图片

不信,你可以看看这个:

图片

  1. 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文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值