问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在批处理中set怎么使用

发布网友 发布时间:2022-04-27 03:15

我来回答

2个回答

热心网友 时间:2022-06-25 08:25

SET [variable=[string]]

variable 指定环境变量名称。
string 指定要指派给变量的一系列字符。

仅键入 SET 而不加参数,可以显示当前的环境变量。

如果命令扩展名被启用,SET 会如下改变:

可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配
SET 命令已使用的名称的所有变量的值。例如:

SET P

会显示所有以字母 P 打头的变量

如果在当前环境中找不到该变量名称, SET 命令将把 ERRORLEVEL
设置成 1。

SET 命令不允许变量名含有等号。

在 SET 命令中添加了两个新替换:

SET /A expression
SET /P variable=[promptString]

/A 命令选项指定等号右边的字符串为被评估的数字表达式。该表达式
评估器很简单并以递减的优先权顺序支持下列操作:

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

如果您使用任何逻辑或取余操作符, 您需要将表达式字符串用
引号扩起来。在表达式中的任何非数字字符串键作为环境变量
名称,这些环境变量名称的值已在使用前转换成数字。如果指定
了一个环境变量名称,但未在当前环境中定义,那么值将被定为
零。这使您可以使用环境变量值做计算而不用键入那些 % 符号
来得到它们的值。如果 SET /A 在命令脚本外的命令行执行的,
那么它显示该表达式的最后值。该分配的操作符在分配的操作符
左边需要一个环境变量名称。除十六进制有 0x 前缀, 八进制
有 0 前缀的,数字值为十进位数字。因此, 0x12 与 18 和 022
相同。请注意八进制公式可能很容易搞混: 08 和 09 是无效的数字,
因为 8 和 9 不是有效的八进制位数。

/P 命令选项允许将变量数值设成用户输入的一行输入。读取输入
行之前,显示指定的 promptString。promptString 可以是空的。

环境变量替换已如下增强:

%PATH:str1=str2%

会扩展 PATH 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。
要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。
"str1" 可以以星号打头;在这种情况下,"str1" 会从扩展结果的
开始到 str1 剩余部分第一次出现的地方,都一直保持相配。

也可以为扩展名指定子字符串。

%PATH:~10,5%

会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏
移量 10)字符开始的五个字符。如果没有指定长度,则采用默认
值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数,
使用的数字则是环境变量数值长度加上指定的偏移量或长度。

%PATH:~-10%

会抽取 PATH 变量的最后十个字符。

%PATH:~0,-2%

会抽取 PATH 变量的所有字符,除了最后两个。

终于添加了延迟环境变量扩充的支持。该支持总是按默认值被
停用,但也可以通过 CMD.EXE 的 /V 命令行命令选项而被启用/停用。
请参阅 CMD /?

考虑到读取一行文本时所遇到的目前扩充的*时,延迟环境
变量扩充是很有用的,而不是执行的时候。以下例子说明直接
变量扩充的问题:

set VAR=before
if "%VAR%" == "before" (
set VAR=after;
if "%VAR%" == "after" @echo If you see this, it worked
)

不会显示消息,因为在读到第一个 IF 语句时,BOTH IF 语句中
的 %VAR% 会被代替;原因是: 它包含 IF 的文体,IF 是一个
复合语句。所以,复合语句中的 IF 实际上是在比较 "before" 和
"after",这两者永远不会相等。同样。以下这个例子也不会达到
预期效果:

set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%

原因是,它不会在目前的目录中建立一个文件列表,而只是将
LIST 变量设成找到的最后一个文件。这也是因为 %LIST% 在
FOR 语句被读取时,只被扩充了一次;而且,那时的 LIST 变量
是空的。因此,我们真正执行的 FOR 循环是:

for %i in (*) do set LIST= %i

这个循环继续将 LIST 设成找到的最后一个文件。

延迟环境变量扩充允许您使用一个不同的字符(惊叹号)在执行
时间扩充环境变量。如果延迟的变量扩充被启用,可以将上面
例子写成以下所示,以达到预期效果:

set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo If you see this, it worked
)

set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%

如果命令扩展名被启用,有几个动态环境变量可以被扩展,但
不会出现在 SET 显示的变量列表中。每次变量数值被扩展时,
这些变量数值都会被动态计算。如果用户用这些名称中任何
一个定义变量,那个定义会替代下面描述的动态定义:

%CD% - 扩展到当前目录字符串。

%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。

%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。

%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。

%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。

%CMDEXTVERSION% - 扩展到当前命令处理器扩展名版本号。

%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。

热心网友 时间:2022-06-25 08:25

set 功能一览
[设置变量]
格式:set 变量名=变量值
详细:被设定的变量以%变量名%引用
[取消变量]
格式:set 变量名=
详细:取消后的变量若被引用%变量名%将为空
[展示变量]
格式:set 变量名
详细:展示以变量名开头的所有变量的值
[列出所有可用的变量]
格式:set
[计算器]
格式:set /a 表达式
示例:set /a 1+2*3 输出 7
[设置变量为表达式计算后的值]
set a=1+2
echo %a% ==>输出1+2
————————————
set /a a=1+2
echo %a% ==>输出3
[设置变量为用户输入的值]
set /p a=输入一个值 ==>输出 输入一个值
echo %a% ==>显示用户输入的值
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
若cpu一秒执行n次运算需耗能5w,那执行2n次运算要耗能是大于小于还是等于... 大神们,N5G跟N5W哪里不一样? 刚出生的婴儿会感冒吗 刚出生宝宝感冒的症状 怀庄永佳福代理,什么品牌白酒好呢? 做白酒品牌代理,有怀庄永佳福牌子怎么样? 怀庄永佳福白酒喝得人多吗?代理怎么样? 为什么很多女性都把男闺密当作结婚对象? 关于电影“罗生门”的问题 实际利率法是指什么 信用卡信用额度14万,取现额度7万,我能贷到多少钱 信用卡透支14万,请大神指点江山! 信用卡欠款14万要坐多久才坐牢 欠银行信用卡14万还不了会坐牢 专辑的set是什么意思 信用卡14万需要多少利息 信用卡欠款14万,每个月都按时还款,借呗有钱花欠款23万,征信没有逾期,工资每月5K,可以按揭买房吗? 透支信用卡14万一个月利息是多少钱 汽车res和set怎样使用 农业银行信用卡14万分期12个月,每月还多少 set的词组以及用法 农业银行信用卡欠了14万,逾期两个月会坐牢吗? 我透支的信用卡现在已经有14万元元还不上该怎么办? 广发信用卡14万额度算高吗 信用卡欠款14万,没逾期过,每月工资5500,可以按揭买房吗?能贷款多少? 我在账单日当天购买东西,会不会计入本月还款 账单日当天的消费是计入当期账单还是下期的 偶想买个称体重的电子秤 什么牌子的质量好啊? 称体重的电子秤多少钱?? 称体重的电子称!!! 信用卡透支十四万如何快速轻松还款 信用卡欠了14万 已经刑拘 接下来应该这么办?才嫩把人救出来 VB中的set详细用法 14万信用卡债压垮婚姻 夫妻之间什么负债算共同债务 关于MATLAB中set的使用? 建行信用卡14万多积分能换多少东西 关于dos中set命令的用法疑惑 华为手机怎么开指纹支付 怎么用笔记本触摸板上下滚动页面? 华硕R513C笔记本触控板怎么上下滑动页面 笔记本触控板怎么上下滑动页面 华硕I5 家庭版 搜狐视频可以领3天会员 惠普笔记本电脑怎么设置触摸屏上下滑动条 笔记本怎样用触摸板上下移动网页 笔记本电脑的触摸区的如何设置上下滑动功用 现在有免费搜狐会员吗? 我有两个号码为什么只能领搜狐的一次免费会员? 笔记本的触摸板不能像鼠标滚轮一样让页面上下滑动了 要怎么设置啊? 搜狐新闻发红包是真的吗 搜狐新闻都什么时候有红包