中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-12 21:38
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助:set进行十进制计算,却得到八进制结果 查看 1,062 回复 3
楼 主 求助:set进行十进制计算,却得到八进制结果 发表于 2009-12-03 17:37 ·  中国 北京 联通(数字北京大厦IDC机房)
新手上路
积分 5
发帖 4
注册 2008-10-07 15:11
17年会员
UID 127660
性别 男
状态 离线
@echo off
set var=000100100003
set a=%var:~4,4%
set /a b=%a%+1
echo %a%+1是%b%
pause

今天第一次遇到这样的问题,本想是十进制计算问题,结果却是八进制计算结果???
中间四位数据有很多种情况,请不要使用截取长度的方法。

[ Last edited by rongfeng98 on 2009-12-3 at 17:44 ]
2 发表于 2009-12-04 12:25 ·  中国 北京 联通(数字北京大厦IDC机房)
新手上路
积分 5
发帖 4
注册 2008-10-07 15:11
17年会员
UID 127660
性别 男
状态 离线
已解决
3 发表于 2009-12-10 15:54 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
批处理在运算时,会认定所有以0开头的数字为8进制,以0x开头的为16进制。
在set /a和if比较运算时,要注意这个问题
4 发表于 2009-12-25 16:14 ·  中国 广东 佛山 移动
新手上路
积分 5
发帖 4
注册 2008-10-07 15:11
17年会员
UID 127660
性别 男
状态 离线
谢谢!后来经过测试,的确如Hanyeguxing所说。
加上进制标志符
@echo off
set var=0x00010x000a0x0003
set a=%var:~6,6%
set /a b=%a%+1
echo %a%+1是%b%
pause
论坛跳转: