[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
补充一个字符串比较中的问题, 关键是比较时对 短横线 - 和 单引号 ' 的处理问题
  1. if "e" leq "-" (echo 小于) else echo 大于
复制代码
显示的是 大于, 表明 字母 e 是大于短横线 - 的
那么, 字符串 "ef" 也应该是大于 "-f" 的, 可是其实不然
  1. if "ef" leq "-f" (echo 小于) else echo 大于
复制代码
显示的却是 小于
上面所述中, 将短横线换作单引号也得到同样结果, 究竟含有 短横线 或 单引号 的字符串在比较时是如何处理的?
我对此问题的分析和猜测请见: http://bbs.bathome.net/thread-6853-1-1.html
1

评分人数

    • qzwqzw: 感谢提线索,已加入PB + 10 技术 + 1

TOP

在不考虑 4 楼所述 短横线 单引号 在 if 字符串比较中的问题时, if 字符串比较时, ASCII 字符的大小也不是按 ASCII 字符代码值来排序的, 我也从未找到过相关的官方文档说明, 我对其次序作了一个初步的分析: http://bbs.bathome.net/thread-6851-1-1.html
1

评分人数

    • qzwqzw: 感谢参与,已加入PB + 30 技术 + 1

TOP

数值比较溢出错误的问题

Winxp CMD 处理的数值范围 是 [-2^31, 2^31-1], 即使两个数值都在此范围内, 但它们进行 if 比较( 除仅仅只是相等或不相等 的比较) 时, 也可能发生溢出错误, 发生情形为两个数的差值的绝对值 大于或等于 2^31 时, 示例
  1. if 3 gtr -2147483645 (echo 3>-2147483645) else (echo 3<=-2147483645)
复制代码
显示结果为:
3<=-2147483645

更多请见: http://bbs.bathome.net/thread-7659-1-1.html
1

评分人数

    • qzwqzw: 谢谢你的提供,准备将if和for的限定分别加入 ...PB + 30 技术 + 1

TOP

双引号, 空格对 set 输出和变量识别的影响
详见 http://bbs.bathome.net/thread-7696-1-1.html
一. 半角双引号, 半角空格, 全角空格都可能导致变量名不能被 set 正常识别(其中部分原因和下面第二条有关)
二. 以下情形可以显示每个驱动器下的最后工作目录(排在空 set 命令显示的环境变量信息之前):
  1. set 后面是一个或若干个全角空格(可以紧跟)
  2. set 后面是一个双引号(不能紧跟) 或 一对半角双引号 " (一对双引号中间可以含有若干个半角或全角空格)
1

评分人数

    • qzwqzw: 非常不错的总结,考虑更新首帖的相关内容PB + 30 技术 + 1

TOP

新发现半角逗号 "," 也对 set 命令有影响, 用逗号作参数也可 set, 来输出各驱动器的最后工作目录, 对 set 命令变量识别的影响也和 38楼所述相同或相似

set, 可以显示工作目录, 让人想起了 dos 下, 逗号可以加强 dir 命令

[ 本帖最后由 neorobin 于 2010-4-20 23:26 编辑 ]

TOP

返回列表