中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-29 21:22
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]数值计算的批处理输入08和09提示无效数字 查看 791 回复 8
楼 主 [求助]数值计算的批处理输入08和09提示无效数字 发表于 2009-02-10 00:34 ·  中国 广东 中山 电信
新手上路
积分 8
发帖 8
注册 2008-12-13 15:08
17年会员
UID 133749
性别 男
状态 离线
在下有个问题,可烦死了,请大家帮帮我

批命令如下:
@echo off
set /p var=请输入一个数值:
echo %var% >1.txt
set /a var2=%var%+101
echo %var2% >>1.txt
pause


问题:输入任何数值都能正常显示出来,但偏偏输入08或09这两个数值就出问题!
提示为:无效数字.数字常数只能是十进制.............

而输入8或9就没问题,但我要前面的0

谢谢帮忙!!

───────────────── 版务记录 ─────────────────
执行:HAT
操作:在帖子标题中增加搜索关键字;代码加code标签
说明:原标题"为什么偏偏不能输入08和09?"不利于论坛搜索
处罚:论坛新人免于积分处罚
提示:建议阅读以下帖子
{1415}提问的智慧
{7326}论坛新手必读,所有人的基本行为准则
{22703}请不要做浮躁的人
{27314}反面教材:本论坛“精彩”标题小集
{32667}愤怒:那些连标题都写不清楚的人们啊,你们醒醒吧
{32825}本版严厉整顿烂帖
───────────────── 版务记录 ─────────────────


[ Last edited by HAT on 2009-2-10 at 00:55 ]
2 发表于 2009-02-10 00:50 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
set的帮助里面有讲解,批处理认为0开头的数字是八进制。
3 发表于 2009-02-10 00:59 ·  中国 广东 中山 电信
新手上路
积分 8
发帖 8
注册 2008-12-13 15:08
17年会员
UID 133749
性别 男
状态 离线
哦!原来是这样!
那有方法解决我这个问题吗?我必须要用08和09,谢谢啊!
4 发表于 2009-02-10 01:22 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
一位数:08 09
可以这样
set /a var2=0x%var%+101

二位数:018 019
可以这样
set /a var2=1%var%-1000+101

三位数:0118 0119
可以这样
set /a var2=1%var%-10000+101

如果随机的,前有N个0,就麻烦一点:

:lp
if '%var:~0,1%=='0 set var=%var:~1%&goto :lp
set /a var2=%var%+101

当然,这样,var原来的值就被破坏了,去掉了0

[ Last edited by netbenton on 2009-2-11 at 17:21 ]
精简
=> 个人网志
5 发表于 2009-02-10 02:41 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
6 发表于 2009-02-11 18:57 ·  中国 江西 南昌 电信
中级用户
★★
积分 206
发帖 100
注册 2007-07-09 20:51
18年会员
UID 93566
性别 男
状态 离线
set vara=%var:~1,32%
最高精确是32位
前面多2个0要怎么解决呢?
要是N个0呢?
7 发表于 2009-02-11 19:21 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
:lp
if '%var:~0,1%=='0 set var=%var:~1%&goto :lp
set /a var2=%var%+101
精简
=> 个人网志
8 Re 6楼 发表于 2009-02-11 20:04 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
5楼的提供的帖子里面有方法,再仔细看看吧。
9 发表于 2009-02-12 12:13 ·  中国 江西 南昌 电信
中级用户
★★
积分 206
发帖 100
注册 2007-07-09 20:51
18年会员
UID 93566
性别 男
状态 离线
.......好像楼上的方法可以用

[ Last edited by 313885174 on 2009-2-12 at 12:17 ]
论坛跳转: