找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: GNGW

[其他] [已解决]求助批处理命令set与set /a语法使用

[复制链接]
发表于 2024-3-20 22:05:21 | 显示全部楼层
回复 11# GNGW


有趣的是,当set “s=(1+2)&echo %s%”时,当(1+2)中间没有空格时并不会改变当前环境变量s的值,也就是说,只有set “s=(1 + 2)&echo %s%” +号两边有空格时,才会将整个(1 + 2)作为字符串赋值给环境变量s.这个问题的解释就是不加空格解释器会认为后面的是个算数运算式,但没有/a选项,所以解释器认为这是个错误的算式,所以忽略不复制给左边变量

请注意你在上面得出了一个完全错误的结论。

除非有一个天你真正明白了大部分的“预处理”机制,否则不建议在任何时候使用&操作。
否则它的结果容易让你产生错误的猜测。
踏踏实实的,一行一行写代码,才能走的更加长远。别跟他们学乱用&的臭毛病。
C:\Test>set "s=(1+2)"

C:\Test>echo %s%
(1+2)

C:\Test>set "s=(1 + 2)"

C:\Test>echo %s%
(1 + 2)

评分

参与人数 1技术 +1 收起 理由
GNGW + 1 感谢您的忠告和纠正,我也是这样认为,积硅 ...

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:01 , Processed in 0.017387 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表