![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 05:08 |
共 48,040 主题排行 / 350,125 发帖 / 今日 1 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 发现一个得到字符串长度的方法 |
| 可打印版本 1,890 / 12 |
| 第1楼 everest79 | 发表于 2007-12-31 17:59 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
发现一个得到字符串长度的方法 命令如下:
批处理中应用: [ Last edited by everest79 on 2008-1-1 at 12:06 AM ] |
|
| 第2楼 s11ss | 发表于 2007-12-31 18:21 |
| 银牌会员 发帖 566 积分 2,098 | |
|
会产生临时文件:
|
|
| 第3楼 everest79 | 发表于 2007-12-31 18:49 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
嗯,方法有很多,主要是刚发现findstr的/o参数作用,记得原来有个专门总结这个的贴子,找不到了
|
|
| 第4楼 HAT | 发表于 2007-12-31 21:17 |
| 版主 发帖 5,017 积分 9,023 | |
|
学习
发现字符串以重定向符号结束时代码会出错 只要把%x%加上双引号就行了 |
|
| 第5楼 everest79 | 发表于 2007-12-31 21:27 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
已更正,嘿嘿,没多测试
|
|
| 第6楼 ZJHJ | 发表于 2007-12-31 22:31 |
| 高级用户 发帖 374 积分 609 | |
|
请问一下:
为什么? 楼 主 的测试方法比实际的要多 2 ??? 第 2 楼 的测试方法比实际的要少 2 ??? 参数 /a 有什么用???? |
|
| 第7楼 HAT | 发表于 2007-12-31 22:38 |
| 版主 发帖 5,017 积分 9,023 | |
|
The /A switch specifies that the string to the right of the equal sign
is a numerical expression that is evaluated. The expression evaluator is pretty simple and supports the following operations, in decreasing order of precedence: |
|
| 第8楼 everest79 | 发表于 2008-01-01 00:08 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
这个字符偏移好像是包括换行与回车还有什么的,所以在ansi文本中每行多两个字节,在内存中多三具
set /a 是表示后边的为数字表达式,你可以理解为四则运算 |
|
| 第9楼 HAT | 发表于 2008-01-01 12:16 |
| 版主 发帖 5,017 积分 9,023 | |
|
我觉得多出来的那个3就是:行结束符、回车符、换行符。
不知道理解的对不对? |
|
| 第10楼 erel | 发表于 2008-01-03 06:29 |
| 新手上路 发帖 5 积分 10 | |
|
新手学习中
|
|
| 第11楼 BatMan | 发表于 2008-01-07 02:43 |
| 初级用户 发帖 24 积分 54 | |
|
这个方法可以,但是我试了一下,发现这方法比逐个字符判断要慢很多...
FINDSTR /o 法在我的机器上一般要80~100ms,而逐个字符计数法一般是<10ms~20ms左右。可能是因为FINDSTR毕竟是外部命令调用的缘故吧。 [ Last edited by BatMan on 2008-1-7 at 03:04 AM ] |
|
| 第12楼 zh159 | 发表于 2008-01-07 10:17 |
| 金牌会员 发帖 1,467 积分 3,687 | |
Originally posted by BatMan at 2008-1-7 02:43: |
|
| 第13楼 BatMan | 发表于 2008-01-07 13:47 |
| 初级用户 发帖 24 积分 54 | |
Originally posted by zh159 at 2008-1-7 10:17: 原来如此... 我用"世界你好Hello World!"来测试,FINDSTR /O报的是字节数,而逐字符计算则得到字符数,明白楼上的意思了。 但是发现个新问题...如果测试字符串稍改为"世界你好!Hello World!",则Hello World前后的!号在变量延迟扩展时会被视作特殊符号而导致最终结果错误。用%号也会有类似的情况。这问题有解决方案吗? |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |