中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]数值计算的批处理输入08和09提示无效数字
作者:
标题: [求助]数值计算的批处理输入08和09提示无效数字 上一主题 | 下一主题
ybgts
新手上路





积分 8
发帖 8
注册 2008-12-13
状态 离线
『楼 主』:  [求助]数值计算的批处理输入08和09提示无效数字

在下有个问题,可烦死了,请大家帮帮我

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


[ Last edited by HAT on 2009-2-10 at 00:55 ]

2009-2-10 00:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

set的帮助里面有讲解,批处理认为0开头的数字是八进制。



2009-2-10 00:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ybgts
新手上路





积分 8
发帖 8
注册 2008-12-13
状态 离线
『第 3 楼』:  

哦!原来是这样!
那有方法解决我这个问题吗?我必须要用08和09,谢谢啊!

2009-2-10 00:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 4 楼』:  

一位数: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 ]



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-2-10 01:22
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 5 楼』:  

怎样去除数字前面的零?
http://www.cn-dos.net/forum/viewthread.php?tid=39883



2009-2-10 02:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
313885174
中级用户





积分 206
发帖 100
注册 2007-7-9
状态 离线
『第 6 楼』:  

set vara=%var:~1,32%
最高精确是32位
前面多2个0要怎么解决呢?
要是N个0呢?

2009-2-11 18:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 7 楼』:  

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



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-2-11 19:21
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 8 楼』:  Re 6楼

5楼的提供的帖子里面有方法,再仔细看看吧。



2009-2-11 20:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
313885174
中级用户





积分 206
发帖 100
注册 2007-7-9
状态 离线
『第 9 楼』:  

.......好像楼上的方法可以用

[ Last edited by 313885174 on 2009-2-12 at 12:17 ]

2009-2-12 12:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: