标题: [其他] 截取字符串的批处理里面的两个特殊的值为何出错? [打印本页]
作者: abxialiang 时间: 2010-4-23 13:23 标题: 截取字符串的批处理里面的两个特殊的值为何出错?
试下:
@echo off
set "date1=abcdefghijk"
echo %date1:~01,2%-----01
echo %date1:~02,2%-----02
echo %date1:~07,2%-----07
echo %date1:~08,2%-----08
echo %date1:~8,2%-----8
echo %date1:~09,2%-----09
echo %date1:~9,2%-----9
pause
输出结果是:
bc-----01
cd-----02
hi-----07
date1:~08,2-----08
ij-----8
date1:~09,2-----09
jk-----9
说明08,09出问题了,我还蓝过屏,是什么原因呢?(当然严格说起来可以说08,09不是一个数值,但是01,02都行)
作者: GNU 时间: 2010-4-23 13:25
08、09被误认为是八进制数了吧
作者: x9tiancmd 时间: 2010-4-23 13:41
有很多这样的例子了, 自己知道会出错所以不会去试, 一般没有必要学那样写吧(那好像是创造问题),○( ̄﹏ ̄)○
作者: Spring 时间: 2010-4-23 15:50
8进制是0开头,不能出现8以上的数字;
16进制是0x开头,不能出现 g 以上字符。
- @echo off
- set "date1=abcdefghijklmnopqrstuvwxyz"
- echo %date1:~01,2%-----01
- echo %date1:~02,2%-----02
- echo %date1:~07,2%-----07
- echo %date1:~08,2%-----08
- echo %date1:~8,2%-----8
- echo %date1:~0x8,2%-----0x8
- echo 注意下面
- echo %date1:~11,2%-----11
- echo %date1:~013,2%-----013
- echo %date1:~0xb,2%-----0xb
- pause
复制代码
[ 本帖最后由 Spring 于 2010-4-23 15:55 编辑 ]
作者: hanyeguxing 时间: 2010-4-23 16:02
批处理的语法中明确:数值是指十进制的数字,在前缀加 0× 则表示十六进制数字,加 0 则表示八进制数字。因此,八进制表示法容易引起混淆。例如,08 和 09 不是有效数字,因为 8 和 9 不是有效的八进制数字。
[ 本帖最后由 hanyeguxing 于 2010-4-23 16:03 编辑 ]
作者: abxialiang 时间: 2010-4-23 17:36 标题: 回复 4楼 的帖子
谢谢,我知道原因了。。。。。。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |