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
相关推荐
ITHAOGE151 小时前
下载 | Win10 2021精简版,预装应用极少!(7月更新、Win 10 IoT LTSC 2021版、适合老电脑安装)
windows·物联网·microsoft·微软·电脑
liulilittle10 小时前
.NET ExpandoObject 技术原理解析
开发语言·网络·windows·c#·.net·net·动态编程
cpsvps16 小时前
VR协作海外云:跨国企业沉浸式办公解决方案
windows·架构·vr·etw事件
义薄云天us17 小时前
019_工具集成与外部API调用
数据库·人工智能·windows·microsoft·claude code
RainbowSea17 小时前
安装win10出现“计算机意外的重新启动或遇到错误。Windows安装无法继续。若要安装Windows,请单击“确定”重新启动计算机,然后安装系统。”
windows·后端
bug攻城狮18 小时前
理解Grafana中`X-Scope-OrgID`的作用与配置
windows·grafana
扛枪的书生20 小时前
AD 提权-NTLM 中继攻击(强制认证)
windows·渗透·kali·提权·域渗透
hqxstudying21 小时前
Java行为型模式---观察者模式
java·开发语言·windows·观察者模式
Damon小智1 天前
玩转ClaudeCode:ClaudeCode安装教程(Windows+Linux+MacOS)
windows·ai·mac·wsl·claude code·vibe code
CHANG_THE_WORLD1 天前
libimagequant windows 编译
windows·libimagequant