批处理 - 运算符

批处理 - 运算符 首页 / 批处理入门教程 / 批处理 - 运算符

运算符是一个符号,告诉编译器执行特定的数学或逻辑操作。

在批处理脚本中,可以使用以下类型的运算符。

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 分配运算符
  • 按位运算符

算术运算符

批处理脚本语言支持普通算术运算符,就像任何语言一样。以下是可用的算术运算符。

OperatorRemarkExample
+相加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
RemarkExample
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"

赋值运算符

批处理脚本语言还提供赋值运算符。以下是可用的赋值运算符。

OperatorRemarkExample
+=相加赋值

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

按位运算符

批处理脚本中也可以使用按位运算符,以下是可用的运算符。

OperatorRemark
&这是按位“and”运算符
|这是按位“or”运算符
^这是按位“xor”或“异或”运算符

以下是展示这些运算符示例。

pqp & qp | qp ^ q
00000
01011
11110
10011
@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的标准输入。

以下代码片段显示了如何使用各种重定向操作。

command > filename

此命令将命令输出重定向到文件。

@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 . :

command >> filename

该命令将命令的输出附加到文件中。

@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

command < filename

该命令键入文本文件,并将文本传递给命令。

@echo off
SORT < Example.txt

如果定义了一个名为Example.txt的文件,该文件包含以下数据。

4
3
2
1

上面程序的输出将是

1
2
3
4

command 2> file

此命令将命令的标准错误写入文件(OS/2和NT)。

DIR C:\ >List_of_C.txt 2>errorlog.txt

在上面的示例中,如果在处理C的目录列表命令时发生任何错误,则它将被发送到日志文件errorlog.txt。

command 2>> file

将命令的标准错误附加到文件(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

此命令将commandA的标准输出重定向到commandB的标准输入。

Echo y | del *.txt

上面的命令会将选项“ y”(即“是”的值)传递给del命令。这将导致删除所有扩展名为txt的文件。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

从0开始学游戏开发 -〔蔡能〕

趣谈Linux操作系统 -〔刘超〕

Python核心技术与实战 -〔景霄〕

Selenium自动化测试实战 -〔郭宏志〕

基于人因的用户体验设计课 -〔刘石〕

打造爆款短视频 -〔周维〕

Spring编程常见错误50例 -〔傅健〕

技术领导力实战笔记 2022 -〔TGO 鲲鹏会〕

Rust 语言从入门到实战 -〔唐刚〕

好记忆不如烂笔头。留下您的足迹吧 :)