Molet

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

Molet 运维技术 2022-11-12 430浏览 0

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

批处理,顾名思义,批量处理,它可以将复杂的事情变得简单,最早出现在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][-pproto][-r][-s][-t][interval]

-a显示所有连接和侦听端口。
-b显示在创建每个连接或侦听端口时涉及的可执行程序。
在某些情况下,已知可执行程序承载多个独立的
组件,这些情况下,显示创建连接或侦听端口时涉
及的组件序列。此情况下,可执行程序的名称
位于底部[]中,它调用的组件位于顶部,直至达
到TCP/IP。注意,此选项可能很耗时,并且在您没有
足够权限时可能失败。
-e显示以太网统计。此选项可以与-s选项结合使用。
-f显示外部地址的完全限定域名(FQDN)。
-n以数字形式显示地址和端口号。
-o显示拥有的与每个连接关联的进程ID。
-pproto显示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][-ncount][-lsize][-f][-iTTL][-vTOS]
[-rcount][-scount][[-jhost-list]|[-khost-list]]
[-wtimeout][-R][-Ssrcaddr][-4][-6]target_name

选项:
-tPing指定的主机,直到停止。
若要查看统计信息并继续操作-请键入Control-Break;
若要停止-请键入Control-C。
-a将地址解析成主机名。
-ncount要发送的回显请求数。
-lsize发送缓冲区大小。
-f在数据包中设置“不分段”标志(仅适用于IPv4)。
-iTTL生存时间。
-vTOS服务类型(仅适用于IPv4。该设置已不赞成使用,且
对IP标头中的服务字段类型没有任何影响)。
-rcount记录计数跃点的路由(仅适用于IPv4)。
-scount计数跃点的时间戳(仅适用于IPv4)。
-jhost-list与主机列表一起的松散源路由(仅适用于IPv4)。
-khost-list与主机列表一起的严格源路由(仅适用于IPv4)。
-wtimeout等待每次回复的超时时间(毫秒)。
-R同样使用路由标头测试反向路由(仅适用于IPv6)。
-Ssrcaddr要使用的源地址。
-4强制使用IPv4。
-6强制使用IPv6。

4.ipconfig 查看本机网络配置

用法:
ipconfig[/allcompartments][/?|/all|
/renew[adapter]|/release[adapter]|
/renew6[adapter]|/release6[adapter]|
/flushdns|/displaydns|/registerdns|
/showclassidadapter|
/setclassidadapter[classid]|
/showclassid6adapter|
/setclassid6adapter[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显示适配器允许的所有IPv6DHCP类ID。
/setclassid6修改IPv6DHCP类ID。


默认情况下,仅显示绑定到TCP/IP的适配器的IP地址、子网掩码和
默认网关。

对于Release和Renew,如果未指定适配器名称,则会释放或更新所有绑定
到TCP/IP的适配器的IP地址租约。

对于Setclassid和Setclassid6,如果未指定ClassId,则会删除ClassId。

示例:
>ipconfig...显示信息
>ipconfig/all...显示详细信息
>ipconfig/renew...更新所有适配器
>ipconfig/renewEL*...更新所有名称以EL开头
的连接
>ipconfig/release*Con*...释放所有匹配的连接,
例如"LocalAreaConnection1"或
"LocalAreaConnection2"
>ipconfig/allcompartments...显示有关所有分段的
信息
>ipconfig/allcompartments/all...显示有关所有分段的
详细信息

5.arp 地址转换协议

ARP-sinet_addreth_addr[if_addr]
ARP-dinet_addr[if_addr]
ARP-a[inet_addr][-Nif_addr][-v]

-a通过询问当前协议数据,显示当前ARP项。
如果指定inet_addr,则只显示指定计算机
的IP地址和物理地址。如果不止一个网络
接口使用ARP,则显示每个ARP表的项。
-g与-a相同。
-v在详细模式下显示当前ARP项。所有无效项
和环回接口上的项都将显示。
inet_addr指定Internet地址。
-Nif_addr显示if_addr指定的网络接口的ARP项。
-d删除inet_addr指定的主机。inet_addr可
以是通配符*,以删除所有主机。
-s添加主机并且将Internet地址inet_addr
与物理地址eth_addr相关联。物理地址是用
连字符分隔的6个十六进制字节。该项是永久的。
eth_addr指定物理地址。
if_addr如果存在,此项指定地址转换表应修改的接口
的Internet地址。如果不存在,则使用第一
个适用的接口。
示例:
>arp-s157.55.85.21200-aa-00-62-c6-09....添加静态项。
>arp-a....显示ARP表。

6.route 网络路由表

ROUTE[-f][-p][-4|-6]command[destination]
[MASKnetmask][gateway][METRICmetric][IFinterface]

-f清除所有网关项的路由表。如果与某个
命令结合使用,在运行该命令前,
应清除路由表。

-p与ADD命令结合使用时,将路由设置为
在系统引导期间保持不变。默认情况下,重新启动系统时,
不保存路由。忽略所有其他命令,
这始终会影响相应的永久路由。Windows95
不支持此选项。

-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时。
示例:>routeADD157.0.0.0MASK155.0.0.0157.55.80.1IF1
路由添加失败:指定的掩码参数无效。
(Destination&Mask)!=Destination。

示例:

>routePRINT
>routePRINT-4
>routePRINT-6
>routePRINT157*....只打印那些匹配157*的项

>routeADD157.0.0.0MASK255.0.0.0157.55.80.1METRIC3IF2
destination^^mask^gatewaymetric^^
Interface^
如果未给出IF,它将尝试查找给定网关的最佳
接口。
>routeADD3ffe::/323ffe::1

>routeCHANGE157.0.0.0MASK255.0.0.0157.55.80.5METRIC2IF2

CHANGE只用于修改网关和/或跃点数。

>routeDELETE157.0.0.0
>routeDELETE3ffe::/32

7.tracert路由跟踪

用法:tracert[-d][-hmaximum_hops][-jhost-list][-wtimeout]
[-R][-Ssrcaddr][-4][-6]target_name

选项:
-d不将地址解析成主机名。
-hmaximum_hops搜索目标的最大跃点数。
-jhost-list与主机列表一起的松散源路由(仅适用于IPv4)。
-wtimeout等待每个回复的超时时间(以毫秒为单位)。
-R跟踪往返行程路径(仅适用于IPv6)。
-Ssrcaddr要使用的源地址(仅适用于IPv6)。
-4强制使用IPv4。
-6强制使用IPv6。

四、系统命令

1.taskkill 查杀进程

TASKKILL[/Ssystem[/Uusername[/P[password]]]]
{[/FIfilter][/PIDprocessid|/IMimagename]}[/T][/F]

描述:
使用该工具按照进程ID(PID)或映像名称终止任务。

参数列表:
/Ssystem指定要连接的远程系统。

/U[domain\]user指定应该在哪个用户上下文执行这个命令。

/P[password]为提供的用户上下文指定密码。如果忽略,提示
输入。

/FIfilter应用筛选器以选择一组任务。
允许使用"*"。例如,映像名称eqacme*

/PIDprocessid指定要终止的进程的PID。
使用TaskList取得PID。

/IMimagename指定要终止的进程的映像名称。通配符'*'可用来
指定所有任务或映像名称。

/T终止指定的进程和由它启用的子进程。

/F指定强制终止进程。

/?显示帮助消息。

筛选器:
筛选器名有效运算符有效值
---------------------------------------------------
STATUSeq,neRUNNING|
NOTRESPONDING|UNKNOWN
IMAGENAMEeq,ne映像名称
PIDeq,ne,gt,lt,ge,lePID值
SESSIONeq,ne,gt,lt,ge,le会话编号。
CPUTIMEeq,ne,gt,lt,ge,leCPU时间,格式为
hh:mm:ss。
hh-时,
mm-分,ss-秒
MEMUSAGEeq,ne,gt,lt,ge,le内存使用量,单位为KB
USERNAMEeq,ne用户名,格式为[domain\]user
MODULESeq,neDLL名称
SERVICESeq,ne服务名称
WINDOWTITLEeq,ne窗口标题

说明
----
1)只有在应用筛选器的情况下,/IM切换才能使用通配符'*'。
2)远程进程总是要强行(/F)终止。
3)当指定远程机器时,不支持"WINDOWTITLE"和"STATUS"筛选器。

例如:
TASKKILL/IMnotepad.exe
TASKKILL/PID1230/PID1241/PID1253/T
TASKKILL/F/IMcmd.exe/T
TASKKILL/F/FI"PIDge1000"/FI"WINDOWTITLEneuntitle*"
TASKKILL/F/FI"USERNAMEeqNTAUTHORITY\SYSTEM"/IMnotepad.exe
TASKKILL/Ssystem/Udomain\username/FI"USERNAMEneNT*"/IM*
TASKKILL/Ssystem/Uusername/Ppassword/FI"IMAGENAMEeqnote*"

2.shutdown 关闭或者重启计算机

用法:shutdown[/i|/l|/s|/r|/g|/a|/p|/h|/e][/f]
[/m\\computer][/txxx][/d[p|u:]xx:yy[/c"comment"]]

没有参数显示帮助。这与键入/?是一样的。
/?显示帮助。这与不键入任何选项是一样的。
/i显示图形用户界面(GUI)。
这必须是第一个选项。
/l注销。这不能与/m或/d选项一起使用。
/s关闭计算机。
/r关闭并重新启动计算机。
/g关闭并重新启动计算机。系统重新启动后,
重新启动所有注册的应用程序。
/a中止系统关闭。
这只能在超时期间使用。
/p关闭本地计算机,没有超时或警告。
可以与/d和/f选项一起使用。
/h休眠本地计算机。
可以与/f选项一起使用。
/e记录计算机意外关闭的原因。
/m\\computer指定目标计算机。
/txxx设置关闭前的超时为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=自定义)
类别主要次要标题

U00其他(计划外)
E00其他(计划外)
EP00其他(计划内)
U05其他故障:系统没有反应
E11硬件:维护(计划外)
EP11硬件:维护(计划内)
E12硬件:安装(计划外)
EP12硬件:安装(计划内)
E22操作系统:恢复(计划内)
EP22操作系统:恢复(计划内)
P23操作系统:升级(计划内)
E24操作系统:重新配置(计划外)
EP24操作系统:重新配置(计划内)
P216操作系统:ServicePack(计划内)
217操作系统:热修补(计划外)
P217操作系统:热修补(计划内)
218操作系统:安全修补(计划外)
P218操作系统:安全修补(计划内)
E41应用程序:维护(计划外)
EP41应用程序:维护(计划内)
EP42应用程序:安装(计划内)
E45应用程序:没有反应
E46应用程序:不稳定
U515系统故障:停止错误
U519安全问题
E519安全问题
EP519安全问题
E520网络连接丢失(计划外)
U611电源故障:电线被拔掉
U612电源故障:环境
P70旧版API关机

3.start 启动命令

START["title"][/Dpath][/I][/MIN][/MAX][/SEPARATE|/SHARED]
[/LOW|/NORMAL|/HIGH|/REALTIME|/ABOVENORMAL|/BELOWNORMAL]
[/NODE<NUMAnode>][/AFFINITY<hexaffinitymask>][/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节点的
存,并且会在指定节点之外的处理器上自由运行。

启动/NODE1application1.exe
启动/NODE1application2.exe

两个进程可被进一步限制在相同NUMA节点内的指定处理器上运行。在以下
例中,application1在节点的两个低顺序处理器上运行,而application2
该节点的其后两个处理器上运行。该示例假定指定节点至少具有四个逻辑
理器。请注意,节点号可更改为该计算机的任何有效节点号,而无需更改关联
码。

启动/NODE1/AFFINITY0x3application1.exe
启动/NODE1/AFFINITY0xcapplication2.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文件。

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

继续浏览有关 系统运维 的文章
发表评论