中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-29 07:16
47,816 主题排行 / 349,916 发帖 / 今日 2 篇 / 48,265 会员排行
DOS批处理 & 脚本技术(批处理室) » [讨论][NT]计算字符串长度批处理代码查错
可打印版本  3,471 / 9
第1楼 3742668 发表于 2006-03-30 12:07
荣誉版主 发帖 718 积分 2,013
[讨论][NT]计算字符串长度批处理代码查错


请帮忙测试一下bflen以后有什么漏洞,或者优化改进一下。
本来准备自己测试的,不过想想人多力量大,而且刚好willsort也在,所以就贴出来请大家帮忙看看。主要用途是获取字符串长度,从标号bflen开始,如果测试成功以后在批处理中就可以直接引用而不用再花时间去写了。

[ Last edited by willsort on 2006-5-22 at 12:37 ]
第2楼 willsort 发表于 2006-03-30 15:24
元老会员 发帖 1,512 积分 4,432
Re 3742668:

程序的退出语句有些缺陷,会导致以q起始的所有字符串均无法测得长度。另外,感觉取串长的算法效率有些低,最初改用echo串至文件再取文件长度的算法。但是它也存在无法测出某些含有特殊字符串长的兼容性问题,所以改成现在的算法。

测试案例:
command
command>nul
"command>nul"
command"com



第3楼 3742668 发表于 2006-03-30 16:44
荣誉版主 发帖 718 积分 2,013
先谢了
不过可能是我没说清楚,我的本意是把取字符串长度的那部分做成一个类似函数的东东,然后在别的批处理中可以直接拷贝后调用。呵呵,积累多了以后也好偷懒。
如果我现在另外写个批处理的话我就可以直接把我的bflen标号以后的语句直接拷贝过去然后用call调用。
第4楼 yardian 发表于 2006-12-17 05:53
中级用户 发帖 85 积分 305
二楼的代码2每次都要算1000次,效率太慢了啊?
第5楼 namejm 发表于 2006-12-17 07:29
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  不会的,只会执行字符串长度数的次数就跳出来了,请注意 && goto :_endfor 这一句。
第6楼 zzs162 发表于 2007-02-18 20:30
初级用户 发帖 11 积分 27
收藏嘻嘻
第7楼 skyearth 发表于 2007-03-02 00:35
初级用户 发帖 13 积分 34
代码2也有问题,如果包括中文也只视为1个字节
第8楼 slore 发表于 2007-03-02 00:40
铂金会员 发帖 2,478 积分 5,212
Originally posted by skyearth at 2007-3-1 11:35:
代码2也有问题,如果包括中文也只视为1个字节


这个单纯只的是位数。

vbs直接len(str)……方便
第9楼 slore 发表于 2007-03-02 00:43
铂金会员 发帖 2,478 积分 5,212
最大的bug是只能单行。
第10楼 skyearth 发表于 2007-03-03 03:20
初级用户 发帖 13 积分 34
可能没描述清楚,我是想判断“中英文字符混排”时,用BAT如何得到实际的字节位数,比如:“这是一个test”,如果用代码一,其结果12就是正确的结果,而代码二,其结果就是8,与实际的字节数不一致,这只是字数。

我是在做一个可在原地显示进度信息的脚本,由于汉字的长度不能正确计算,因此,其退格的长度就不好控制,请理解。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023