windows批处理set命令:设置变量,计算表达式

文章目录

基础模式

变量是一切编程的基础,在批处理语言中,通过set设置变量,而在调用变量时,需要在变量两端加上百分号,例如

py 复制代码
set a=1
echo %a%

运行结果为

python 复制代码
>set a=1
>echo 1
1

在运行批处理文件的时候,命令行会默认把每一行代码都展示出来,如果想隐藏代码,可以在这一行代码前面加上@,或者直接在批处理代码最前面加上echo off,以关闭回显。

set除了可以设置变量之外,还可以删除变量,只需set a= 后面不跟任何东西,那么a变量就会被删除。

shell 复制代码
@set a=1
@set a=
@echo %a%

这回的运行结果如下

bat 复制代码
>test.bat
ECHO 处于打开状态。

由于每行代码前面都填上了@,所以也就没有回显。同时a变成了空值,所以echo %a%也就等价于echo,从而返回一个echo状态。

表达式模式

除了基础用法之外,set还有两个开关,分别是/a和/p,前者用于识别数值表达式,后者则用于外部输入。

举个例子

bat 复制代码
>set /a (1+2)*3/4
2

可见命令行的确识别了set /a后面的表达式,并且还给算出了结果。但这里也能看出命令行的一个问题,即只有整型计算,故而9/4=2。

下表按照优先级顺序列出了set支持的运算符。

类别
() 分组
~ - 一元运算符
* / % 算数运算符
+ - 算数运算符
<< >> 逻辑移位
& 按位与
^ 按位异或
| 按位或
= *= /= %= += - &= ^= |= <<= >>= 赋值
, 表达式分隔符

这个表本来是平平无奇的,但最后面有一个表达式分隔符,让人感觉十分困惑,这东西是干嘛的?这东西可以让set /a识别多条语句

js 复制代码
>set /a pi=3, a=2*pi*15, b=pi*15*15
675
>echo %a%
90
>echo %pi%
3

变量输入模式

开关/p可以起到读取输入值的作用,例如下面这组代码

bat 复制代码
echo off
set /p a=please input your value 
echo you input %a%

运行结果如下

python 复制代码
>echo off
please input your value 12345
you input 12345

环境变量

环境变量可以理解为绝对路径的一种映射,从而可以在任意位置引用。添加或删除环境变量,可以右键此电脑->属性->高级系统设置->高级选项卡->环境变量,然后就弹出环境变量的设置窗口了,最常用的是设置Path中的路径。

在命令行中,输入set命令,即可查看当前所有可用的环境变量,如果set后加上变量名,则可查看其对应的值。

js 复制代码
>set TEMP
TEMP=C:\Users\Laser\AppData\Local\Temp

这是Windows中用于存放临时数据的环境变量。

此外,我们刚刚在命令行中创建的变量,也可归入到环境变量范畴,只不过这个变量是临时的,退出命令行就会消失而已。

js 复制代码
>set a
a=12345
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\Laser\AppData\Roaming
相关推荐
梓仁沐白1 小时前
ubuntu+windows双系统切换后蓝牙设备无法连接
windows·ubuntu
九鼎科技-Leo5 小时前
什么是 WPF 中的依赖属性?有什么作用?
windows·c#·.net·wpf
Yang.997 小时前
基于Windows系统用C++做一个点名工具
c++·windows·sql·visual studio code·sqlite3
我不瘦但很逗7 小时前
Windows下使用DBeaver连接云数据库(MySQL)
数据库·windows
ashane13149 小时前
Java list
java·windows·list
万里沧海寄云帆9 小时前
Word 插入分节符页码更新问题
windows·microsoft·word
dot.Net安全矩阵10 小时前
.NET 通过模块和驱动收集本地EDR的工具
windows·安全·web安全·.net·交互
编程修仙11 小时前
Collections工具类
linux·windows·python
程序员小羊!13 小时前
高级 SQL 技巧讲解
windows
xiangshangdemayi14 小时前
Windows环境GeoServer打包Docker极速入门
windows·docker·容器·geoserver·打包·数据挂载