【教程】set命令-详细解释
bat吧
全部回复
仅看楼主
level 13
全文原创,转载请注明出处:小程936
SET 变量控制
1.显示
set 显示当前所有环境变量
set p 显示所有以字母P开头的变量(以此类推)
2.赋值
set 变量名=[变量内容] 给变量赋值
set 变量名= 删除变量
3.特殊赋值(开关/P)
set /p 变量名=[提示] 让用户输入值,并赋值给变量,且可以给出提示。
set /p 变量名=<文件名 读取文件内容,并赋值给变量。
set/p=[提示] 显示提示,按回车键继续。
直接拖拽其他文件到cmd窗口上方,将自动列出该文件位置(该功能在命令提示符-管理员模式下会失效)。
4.计算(开关/A)
set /a 算式 计算指定的算式
示范
set /a num=(12+2)*(13/4)
set /a num*=2
可以使用的计算符号(按照运算优先级列出)
( ) 左右括号
(表达式)括号内的表达式会被优先单独计算,因此可以写成这样:set /a v=(u+=a)/(n=0,m+=1)*(100/256)
! ~ - 一元运算符
!A 判断A的值是否为零,若是,返回1;若不是,返回0。逻辑非
~A 返回A的相反数-1的值,等同于(-A-1)。按位取反
-A返回A的相反数。其实就是负号,与减号相同,注意负号在运算优先级上超越乘除号。负号
* / %% 乘除
A*B返回A乘B所得积。乘
A/B返回A除B所得商。除
A%%B返回A除B所得余数。余数
注:在命令行中使用% (for命令中使用%%),在批处理中使用%% (for命令中使用%%%%)
+ - 加减
A+B返回A加B所得和。加
A-B返回A减B所得差。减
"<<" ">>" 逻辑移位
A"<<"B 返回A乘以2的B次方的商。左移运算符
A">>"B返回A除以2的B次方的商。右移运算符
"&" "^" "|"按位与异或(优先级:与>异>或)。位运算
A"&"B 若两数都为1,返回1;否则返回0。按位与
A"^"B若两数相同,返回0;否则返回1。按位异
A"|"B若两数都为0,返回0;否则返回1。按位或
= *= /= %%= += -= "&"= "^"= "|"= "<<"= ">>"=赋值等号(为方便起见,只举部分例子)
a=表达式 将表达式的计算结果赋值给变量a。等号
a*=表达式 等同于a=a*(表达式)。/= += -= 以此类推。自乘
a%%=表达式 等同于a=a%%(表达式)。自余
a"&"=表达式 等同于a=a"&"(表达式)。"^"= "|"= 以此类推。自与
a"<<"=表达式 等同于a=a"<<"(表达式)。">>"= 以此类推。自左移
示例:set /a a=b*=c/=d+=e-=2,q%%=(a=b=a+b+c+d+e,3),q+=a
, 表达式分隔符
表达式,表达式 用于多行表达式并列,比如set /a a=1+1,b=(2+2,3
+3
),c=d=e=7+5
set /a不需要扩展变量,比如set /a a=%b%+%c%与set /a a=b+c等价(若变量名包含非字母字符,必须使用%变量名%)
如果表达式中的变量并未被赋值或并非数字,则会被自动赋值0
除十进制外,还允许变量的值为八进制或16进制数字,但输出结果一律为十进制。用0开头的数字表示八进制,用0x开头的数字表示十六进制,因此,0x12 与 18 和 022相同。
只支持整数运算,不支持小数点。
使用%random%可输出范围在0-32767的随机数(32767=2^15-1),使用%random%%%a可输出范围在0-a的随机数。
2016年06月02日 11点06分 1
level 13
set /a v=(u+=a)/(n=0,m+=1)*(100/256)
2016年06月02日 11点06分 2
level 13
自顶教程
2017年01月06日 11点01分 4
修正:表达式分隔符的优先级仅次于括号。分隔符,的优先级处于括号和一元运算符之间。set /a a=(!3+3,b=6),c=5
2018年11月26日 04点11分
2019年10月25日 13点10分
level 13
好 顶
2017年01月08日 01点01分 5
level 13
关于set /a的解释,我这应该算是全网最详细的[滑稽]
没看懂可以问我。
[太开心]看完请回答
set /a a=7,b=~!!a
输出什么?(只准猜)
猜对奖励滑稽币一枚
2017年01月08日 10点01分 6
…全网最详细不能说,全吧可以
2017年01月17日 15点01分
@严文思逸 你百度找下试试[滑稽]谷歌的话……国外网站也许有英文版本的
2017年01月17日 15点01分
@幻虚道长🍭 直接set /? 另外之前我把系统语言改了英文,然后命令 /?全都变英文了[阴险]虽然看不懂……
2017年01月18日 04点01分
@严文思逸 我这比系统帮助详细10倍,你有没有仔细看啊[喷]
2017年01月18日 04点01分
level 1
不明觉厉[玫瑰][玫瑰]
2017年01月16日 08点01分 8
level 2
收藏
2018年11月30日 04点11分 9
1