【BAT批处理】bat批量处理脚本特殊符号

八、特殊符号

1、@-隐藏命令

开启了echo off能够起到隐藏命令的效果,而@同样能起到这个效果,只不过需要在每条命令前面都加一个...


2、&&,||-判断

还记得用if errorlevel来判断命令成功与否吗?&&和||同样能起到这个效果,&&表示前面的命令成功以后执行后面的命令,||反之

例:

@echo;>>%SystemRoot%\system32\test.txt&&echo 成功!||echo 失败
@pause>nul


3、|-管道

将前一个命令执行的结果发送给后一个命令

例:

@echo 你好|find "你"
@tasklist|find "exe"


4、&-分行符

可以把几个命令写在同一行

例:

@echo 123&@echo 456
pause>nul


5、^-分行与转义符

1)分行

可以把一个命令写成多行哦

例:

@echo 1^
2^
3^
4
@pause>nul

复制上面的命令,执行结果是什么?这就是分行符的作用


2)转义

当试图输出一个&的时候,会发现输出不了,因为它被当成分行符处理了

这时就要请出转义符^了,它可以剥夺后面第一个符号的特殊地位,变为普通符号。

例:

@echo ^&
@pause>nul

这样就输出了&

另外,当存在a变量(前面set /p a=或set a=给a赋值了)想要输出%a%,一是可以用转义符^,还可以:

echo %%a%%

这样既可将两个百分号识别为一个,起到了转义的作用

还有些特殊情况不需要转义:

echo "0000|000"

用引号括起来可以起到一定的转义的作用,包括set "a=a的值"等

但特别特殊的情况比如获取%1时存在转义符很难处理,没办法正常引用


3)*,?-通配符

什么叫通配符?举个例子,

*.jpg表示所有的jpg,*表示所有文件。那"?"有什么用,*可以为任意字符,但只表示一个字符,比如?.jpg只表示文件名只有一个的jpg文件,比如1.jpg,比.jpg这类。


4)()-括起来

括起来的语句是一个整体


5)>,>>,<-重定向

注意:在重定向符号 ">" 以及 ">>" 前必须添加空格以防万一,因为Batch具有不唯一性所以在很多时候不加空格也能正常使用。但是日常使用中必须添加空格否则失败的几率很大,要么是无法创建/输出,要么文件是空的。

请不要使用不添加空格的不正确用法!

echo 123 >>one.txt

可以输出123追加到one.txt中

echo 123 >one.txt

可以输出123覆盖one.txt中原先的内容

nul是一个系统保留字,所以>nul不会输出到任何文件,可以起到隐藏命令执行结果的效果

2 >nul可以起到隐藏命令失败执行结果的效果

<可以从文件中读取数据到某个命令中,不过这个命令得等待用户输入

例:

@echo off
echo 123 >>00.txt
set /p num=<00.txt
echo 数字是%num%
pause>nul

有些命令不止需要一个>nul,如要连接,需要:>nul 2>nul以此类推

如果前面有数字,需要添加空格

ping >nul 2>nul
=1>nul 2>nul ping
=ping >nul 2>&1.... X>&2 X>&2 X>&3等

nul指空设备,简单来说就是隐藏输出。

2>&1 3>&2 可以一直接下去,&1 &2就是引用第一个、第二个等

> 创建一个文件

>> 追加到一个文件后面

@ 前缀字符.表示执行时本行在cmd里面不显示, 可以使用 echo off关闭显示

^ 对特殊符号( > < &)的前导字符. 第一个只是显示aaa 第二个输出文件bbb

() 包含命令

, 和空格一样的缺省分隔符号.

; 注释,表示后面为注释

: 标号作用

|管道操作

& Usage:第一条命令 & 第二条命令 [& 第三条命令...] 用这种方法可以同时执行多条命令,而不管命令是否执行成功

&& Usage:第一条命令 && 第二条命令 [&& 第三条命令...]当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有命令;

|| Usage:第一条命令 || 第二条命令 [|| 第三条命令...]当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令;

eol=c - 指一个行注释字符的结尾(就一个)

skip=n - 指在文件开始时忽略的行数。

delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。

== - 等于

EQU - 等于

NEQ - 不等于

LSS - 小于

LEQ - 小于或等于

GTR - 大于

GEQ - 大于或等于

选择开关/i则不区分字符串大小写;选择not项,则对判断结果进行逻辑非。