标题: [数值计算] 批处理将两个set /a命令合并为何产生错误? [打印本页]
作者: Fengwujiutian 时间: 2011-1-12 16:11 标题: 批处理将两个set /a命令合并为何产生错误?
- @echo off
- setlocal enabledelayedexpansion
- set/a a=1
- set/a a=!a!
- echo 第一次:%a%
- set/a a=2,a=!a!
- echo 第二次:%a%
- pause
复制代码
为什么第二次依然显示1?
[ 本帖最后由 Fengwujiutian 于 2011-1-12 18:28 编辑 ]
作者: yhcbird 时间: 2011-1-12 16:48
这是什么用法啊。看不懂。。。
作者: hucuibai 时间: 2011-1-12 16:59
- @echo off
- setlocal enabledelayedexpansion
- set a=1
- echo 第一次:%a%
- set a=2
- echo 第二次:!a!
- pause
复制代码
作者: yhcbird 时间: 2011-1-12 17:38
楼主是说两个set /a你把楼主的精髓给去掉了
作者: zqz0012005 时间: 2011-1-12 22:42
其实是正常的,在执行语句前会展开延迟变量。
作者: tmplinshi 时间: 2011-1-12 23:00
set /? 的帮助:
在表达式中的任何非数字字符串键作为环境变量
名称,这些环境变量名称的值已在使用前转换成数字。如果指定
了一个环境变量名称,但未在当前环境中定义,那么值将被定为
零。这使您可以使用环境变量值做计算而不用键入那些 % 符号
来得到它们的值。
作者: Fengwujiutian 时间: 2011-1-12 23:02
那么我想对一个变量做四则运算,然后取绝对值,然后再运算,在一个 set /a 中就不能完成了?
例如:- @echo off
- set /p b=
- set /a b=b*2-153
- set /a b=%b:-=%*25+64
- echo %b%
复制代码
[ 本帖最后由 Fengwujiutian 于 2011-1-12 23:06 编辑 ]
作者: powerbat 时间: 2011-1-12 23:40 标题: 回复 6楼 的帖子
我觉得这个解释主要是针对set /a n=var这种形式的,即变量不用%括起来的情况
5楼的解释才是一般性的。如echo !n!也是在命令执行前就要展开!n!的。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |