[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 截取字符串的批处理里面的两个特殊的值为何出错?

试下:
@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都行)

08、09被误认为是八进制数了吧

TOP

有很多这样的例子了,  自己知道会出错所以不会去试, 一般没有必要学那样写吧(那好像是创造问题),○( ̄﹏ ̄)○
    ╭╩═╮
╭╯G O ╠ 雁过留声
╰⊙═⊙╯

TOP

8进制是0开头,不能出现8以上的数字;
16进制是0x开头,不能出现 g 以上字符。


  1. @echo off
  2. set "date1=abcdefghijklmnopqrstuvwxyz"
  3. echo %date1:~01,2%-----01
  4. echo %date1:~02,2%-----02
  5. echo %date1:~07,2%-----07
  6. echo %date1:~08,2%-----08
  7. echo %date1:~8,2%-----8
  8. echo %date1:~0x8,2%-----0x8
  9. echo 注意下面
  10. echo %date1:~11,2%-----11
  11. echo %date1:~013,2%-----013
  12. echo %date1:~0xb,2%-----0xb
  13. pause
复制代码

[ 本帖最后由 Spring 于 2010-4-23 15:55 编辑 ]

TOP

批处理的语法中明确:数值是指十进制的数字,在前缀加 0× 则表示十六进制数字,加 0 则表示八进制数字。因此,八进制表示法容易引起混淆。例如,08 和 09 不是有效数字,因为 8 和 9 不是有效的八进制数字。

[ 本帖最后由 hanyeguxing 于 2010-4-23 16:03 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 4楼 的帖子

谢谢,我知道原因了。。。。。。

TOP

返回列表