1.if else语句
(1)if exist a.txt (type a.txt) else (echo 不存在a.txt文件)
(2)set a=sb1 set b=sb2 if %a%==%b% (type a.txt) else (echo 不存在a.txt)
结果:Hello World!(a.txt的内容)
(3) if [/i](强制忽略大小写) string1 op string2 (type a.txt) else (echo 不存在a.txt)
op可以是 equ:等于,neq:不等于,lss:小于,leq:小于等于 等等。例如:
if /i a equ A (type a.txt) else (echo 不存在a.txt) 那么将会打印a.txt的内容(因为 /i 强制忽略了大小写)
似乎/i选项对字符串变量不起作用。
(4) if defined 变量名 () else ()
变量名是否被定义过。
比如:
@echo offset a=sb1set b=SB2if defined c (type a.txt) else (echo 不存在a.txt)
c是没有被定义过的,所以将打印a.txt
2.for 循环
for %%变量名 in (set) do (循环体) [循环体语句选项]
例如:
@echo offset /a sum=0for %%x in (*.txt) do (echo %%xset /a sum=sum+1)echo 一共有%sum%个.txt文件
执行结果如下:
可以看到,它打印了当前目录下的所有.txt文件。
3.setlocal 语句
setlcoal 可以设置局部,与endlocal配合使用
4.shift 参数左移语句
在命令行中执行批处理文件时,也是可以带入参数的,%0表示这个批处理文件的名字,也是第一个参数,%1,%2,%3。。。依次代表第1,2,3个参数。
shift语句可以将参数左移。
例如:
@echo offecho %1 %2 %3 %4shiftecho %1 %2 %3 %4shiftecho %1 %2 %3 %4
执行结果如下:
可以看到,参数被左移了。
5.*和?通配符的使用
和数据库里面的通配符的使用很类似,*代表任意长度的字符串,?代表单个字符。
例如我要显示C盘根目录下的所有以E开头的文件及文件夹:
/a表示属性,-h表示非隐藏文件夹
6.重定向符 > 和 >>
string > file 可以将新建或覆盖file文件并且将字符串string写入file.
string >> file 可以将字符串string 追加至file文件。
例如:
@echo offecho type a.txt > auto.txtdir >> auto.txt
执行后auto.txt文件的内容如下(注意字符串之前如果有echo的话就是将这个字符串写入文件,没有的话就是将调用命令的结果写入文件):
7.| 管道符
cmd1 | cmd2
管道符可以将cmd1的输出作为cmd2的输入
例如:
@echo off dir /b *.txt | sort > auto.txttype auto.txt
执行结果如下:
可以看到输出了所有.txt文件并且已经用sort排序好了。
新闻热点
疑难解答