运算符是一个符号,告诉编译器执行特定的数学或逻辑操作。
在批处理脚本中,可以使用以下类型的运算符。
批处理脚本语言支持普通算术运算符,就像任何语言一样。以下是可用的算术运算符。
Operator | Remark | Example |
---|---|---|
+ | 相加 | 1 + 2=3 |
- | 相减 | 2 - 1=1 |
* | 相乘 | 2 * 2=4 |
/ | 相除 | 3/2=1.5 |
% | 取模 | 3 % 2=1 |
@echo off SET /A a = 5 SET /A b = 10 SET /A c = %a%+%b% echo %c% SET /A c = %a%-%b% echo %c% SET /A c = %b%*%a% echo %c% SET /A c = %b%/%a% echo %c% SET /A c =%b% %% %a% echo %c%
上面的命令产生以下输出。
15 -5 50 2 0
关系运算符允许对象的比较。以下是可用的关系运算符。
Operator | Remark | Example |
---|---|---|
EQU | 测试两个对象之间的相等性 | 2 EQU 2将为true |
NEQ | 测试两个对象之间的差异 | 3 NEQ 2将为true |
LSS | 检查左对象是否小于右操作数 | 2 LSS 3将为true |
LEQ | 检查左对象是否小于或等于右操作数 | 2 LEQ 3将为true |
GTR | 检查左对象是否大于右操作数 | 3 GTR 2将为true |
GEQ | 检查左对象是否大于或等于右操作数 | 3 GEQ 2将为true |
@echo off SET /A a = 5 SET /A b = 10 if %a% EQU %b% echo A is equal to than B if %a% NEQ %b% echo A is not equal to than B if %a% LSS %b% echo A is less than B if %a% LEQ %b% echo A is less than or equal B if %a% GTR %b% echo A is greater than B if %a% GEQ %b% echo A is greater than or equal to B
上面的命令产生以下输出。
A is not equal to than B A is less than B A is less than or equal B
逻辑运算符用于判断布尔表达式,以下是可用的逻辑运算符。
批处理语言配备了完整的布尔逻辑运算符,如AND,OR,XOR,但仅适用于二进制数。
Operator | Remark |
---|---|
AND | 这是逻辑上的"and"运算符 |
OR | 这是逻辑"or"运算符 |
NOT | 这是逻辑上的"not"运算符 |
@echo off SET /A a = 5 SET /A b = 10 IF %a% LSS 10 (IF %b% GTR 0 (ECHO %a% is less than 10 AND %b% is greater than 0))
上面的命令产生以下输出。
5 is less than 10 AND 10 is greater than 0
以下是可以使用IF语句实现的AND操作的示例。
@echo off SET /A a = 5 SET /A b = 10 IF %a% GEQ 10 ( IF %b% LEQ 0 ( ECHO %a% is NOT less than 10 OR %b% is NOT greater than 0 ) ELSE ( ECHO %a% is less than 10 OR %b% is greater than 0 ) ) ELSE ( ECHO %a% is less than 10 OR %b% is greater than 0 )
上面的命令产生以下输出。
5 is less than 10 AND 10 is greater than 0
以下是如何使用NOT运算符的示例。
@echo off SET /A a = 5 IF NOT %a%==6 echo "A is not equal to 6"
上面的命令产生以下输出。
"A is equal to 5"
批处理脚本语言还提供赋值运算符。以下是可用的赋值运算符。
Operator | Remark | Example |
---|---|---|
+= | 相加赋值 | Set /A a=5 a += 3 输出将是8 |
-= | 相减赋值 | Set /A a=5 -= 3 输出将是2 |
*= | 相乘赋值 | Set /A a=5 * * 3 输出将是15 |
/= | 相除赋值 | Set /A a=6 a/= 3 输出将是2 |
%= | 取模赋值 | Set /A a=5 a%= 3 输出将是2 |
@echo off SET /A a = 5 SET /A a+=5 echo %a% SET /A a-=5 echo %a% SET /A a*=5 echo %a% SET /A a/=5 echo %a% SET /A a%=5 echo %a%
上面的命令产生以下输出。
10 5 25 5 5
批处理脚本中也可以使用按位运算符,以下是可用的运算符。
Operator | Remark |
---|---|
& | 这是按位“and”运算符 |
| | 这是按位“or”运算符 |
^ | 这是按位“xor”或“异或”运算符 |
以下是展示这些运算符示例。
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
@echo off SET /A "Result=48 & 23" echo %Result% SET /A "Result=16 | 16" echo %Result% SET /A "Result=31 ^ 15" echo %Result%
上面的命令产生以下输出。
16 16 16
重定向是获取命令输出并将该输出重定向到其他输出的概念。以下命令可用于重定向。
command > filename - 将命令输出重定向到文件。
command >> filename - 追加到文件中。
command < filename - 键入一个文本文件,然后将文本传递给命令。
command 2> file - 将命令的标准错误写入文件(OS/2和NT)。
command 2>> file - 将命令的标准错误附加到文件(OS/2和NT)。
commandA | commandB - 将commandA的标准输出重定向到commandB的标准输入。
以下代码片段显示了如何使用各种重定向操作。
此命令将命令输出重定向到文件。
@echo off ipconfig>C:\details.txt
上面程序的输出将是ipconfig命令的所有详细信息都将发送到文件C:\ details.txt。如果您打开上述文件,则可能会看到与以下内容类似的信息。
Windows IP Configuration Wireless LAN adapter Local Area Connection* 11: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . : Ethernet adapter Ethernet: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . : Wireless LAN adapter Wi-Fi: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . : Tunnel adapter Teredo Tunneling Pseudo-Interface: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . :
该命令将命令的输出附加到文件中。
@echo off systeminfo>>C:\details.txt
上面程序的输出将是systeminfo命令的所有详细信息都将附加到文件C:\ details.txt。如果打开上述文件,则可能会看到与以下内容类似的信息。
Windows IP Configuration Wireless LAN adapter Local Area Connection* 11: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . : Ethernet adapter Ethernet: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . : Wireless LAN adapter Wi-Fi: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . : Tunnel adapter Teredo Tunneling Pseudo-Interface: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . : Host Name: WIN-50GP30FGO75 OS Name: Microsoft Windows Server 2012 R2 Standard OS Version: 6.3.9600 N/A Build 9600 OS Manufacturer: Microsoft Corporation OS Configuration: Standalone Server OS Build Type: Multiprocessor Free Registered Owner: Windows User Registered Organization: Product ID: 00252-70000-00000-AA535 Original Install Date: 12/13/2015, 12:10:16 AM System Boot Time: 12/30/2015, 5:52:11 AM System Manufacturer: LENOVO System Model: 20287 System Type: x64-based PC
该命令键入文本文件,并将文本传递给命令。
@echo off SORT < Example.txt
如果定义了一个名为Example.txt的文件,该文件包含以下数据。
4 3 2 1
上面程序的输出将是
1 2 3 4
此命令将命令的标准错误写入文件(OS/2和NT)。
DIR C:\ >List_of_C.txt 2>errorlog.txt
在上面的示例中,如果在处理C的目录列表命令时发生任何错误,则它将被发送到日志文件errorlog.txt。
将命令的标准错误附加到文件(OS/2和NT)。
DIR C:\ >List_of_C.txt 2>errorlog.txt DIR D:\ >List_of_C.txt 2>>errorlog.txt
在上面的示例中,如果在处理D的目录列表的命令时有任何错误,那么它将被附加到日志文件errorlog.txt中。
此命令将commandA的标准输出重定向到commandB的标准输入。
Echo y | del *.txt
上面的命令会将选项“ y”(即“是”的值)传递给del命令。这将导致删除所有扩展名为txt的文件。
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)