文章目录


命令的组合批处理命令
  • Call
  • Choice
  • Echo
  • For



命令的组合


命令1 & 命令2


表示先执行命令1,再执命令2

下面属于条件处理


命令1 && 命令2


表示只有当命令1执行成功后才会执行命令2


命令1 || 命令2


表示只有在命令1失败时命令2才会执行

我们还可以使用​​()​​​对命令集进行组合


(命令1 & 命令2) && 命令3

命令1 || (命令2 & 命令3)


在​​win server 2008 R2​​​中,只有当​​命令1​​​和​​命令2​​​都执行成功时,​​(命令1 & 命令2)​​结果才为真

其实和上面没啥区别,就是把一个命令变成了两个命令,多加几个​​&​​可疑扩展更多的命令

在Win10中,只有当​​命令2​​执行失败时,​​(命令1 & 命令2)​​的结果才为假,也就是说该表达式的最终结果由组合中的最后一条命令来决定,当​​命令2​​执行失败时,即使​​命令1​​执行成功,​​&&​​后面的命令也不会执行

批处理命令

Call

用于从一个批处理文件中调用另一个批处理文件


Call C:\myBat.bat


​Call​​​的另一种用法就是​​Call lable​

与​​Goto lable​​​的区别是,​​Call​​​调用完子语句之后回想高级语言中的方法调用一样返回原来的位置,而​​Goto​​​是继续接着​​lable​​之后的语句执行

Choice

示例:


choice /c YNC /t 10 /d C /m “按下Y确定,N拒绝,C取消”


​10​​​秒后以默认选项​​C​​执行


按下Y确定,N拒绝,C取消 [Y,N,C]?C


Echo

使用​​Echo off​​可关闭命令本身的回显

​echo off​​​可以关闭命令的显示,但是​​echo off​​本身还是会显示的,我们可以​在它前面加一个​​@​​来禁止它自己显示

For

基本语法:


For %%变量 IN (集合) do 命令 [命令选项]


处理文件集

eg:

for %%A in (C:\myFiles\*.txt) do echo %%A

如果是多个扩展名,可以写成下面这样:

for %%A in (C:\myFiles\*.txt C:\myFiles\*.doc) do echo %%A

处理目录

for /D %%A in (C:\Users\1234\Documents\*) do echo %%A

输出​​C:\Users\1234\Documents​​的所有目录(​不包括子目录​)

上面的是​​/D​​​选项,还有一个​​/R​​选项,​包含子目录​,用法是这样的:

for /R C:\Users\1234\Documents\ %%A in (.) do echo %%A
输出C:\Users\1234\Documents\中的所有目录,包括子目录

先把目录放在前头​,然后以该目录为​相对目录​,进行指定的操作

一定范围的值

基本语法:


for /L %%变量 in (开始#, 步长#, 结束#) do 命令 [命令参数]


eg:

for /L %%A in (0, 4, 20) do echo %%A
从0开始,间隔为4,输出到20

解析文本字符串


for /F [“解析关键字”] %%变量 in (文件名称集) do 命令 [命令参数]

for /F [“解析关键字”] %%变量 in (“文本字符串”) do 命令 [命令参数]

for /F [“解析关键字”] %%变量 in (‘命令’) do 命令 [命令参数]