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

既然已经限定一个字母,那么:
  1. for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do set #%%a=%%a
  2. if "A"=="%#A%" (echo;小写) else echo;大写
复制代码
%#A%变量名忽略大小写,变量值则区分;而 if  默认比较是区分大小写的
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

本帖最后由 hanyeguxing 于 2011-5-13 18:17 编辑

25# plp626


if [not] string1 compareop string2 command [else expression] 这里 if 执行的是值(含义)比较,值相等时则按扩展顺序(默认小写字母在前、英文在前)决定大小;数字时则直接相等;含义的扩展,则由代码页决定。
所以不同代码页下比较的结果很可能是不同的,而我们通常所说的比较结果实际是英文437内核简体中文936扩展下的比较结果,例如:
  1. if ⒉ lss 3 (echo 1) else echo;2
  2. pause&chcp 850 >nul
  3. if ⒉ lss 3 (echo 3) else echo;4
  4. pause
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

本帖最后由 hanyeguxing 于 2011-5-13 16:39 编辑

28# plp626


1,在 936代码页 下 ⒉ 是小于 3 的,而在 437代码页下是大于 3 的
2,为什么总记挂着他是单字节还是双字节呢? cmd 中所有字符都是按宽字符处理的
在 cmd 中,以 fgets 函数转换字符串为宽字符;然后:
wcscmp 比较两个宽字符串(宽字符)
wcsncmp 类似于wcscmp(), 还要指定比较字符字符串的数目(宽字符)
iswspace 测试字符是否是空白符号(宽字符)
iswdigit 测试字符是否为数字(宽字符)
iswxdigit 测试字符是否是十六进制的数字(宽字符)
iswalpha 测试字符是否是字母(宽字符)
towlower 把字符转换为小写(宽字符)
towupper 把字符转换为大写(宽字符)
wcslen 获得宽字符串的数目(宽字符)
wcstol 把宽字符的初始部分转换为长整数(宽字符)
wcstoul 把宽字符的初始部分转换为无符号长整数(宽字符)
wcsstr 在一字符串中查找另一字符串第一次出现的位置(宽字符)
wcscat 把一个字符串接到另一个字符串的尾部(宽字符)
wcsrchr 从尾部开始查找子字符串出现的第一个位置(宽字符)
swprintf 根据vararg参量表格式化成字符串(宽字符)
wcscpy 拷贝字符串(宽字符)
wcsncpy 类似于wcscpy(), 同时指定拷贝的数目(宽字符)
wcschr 查找子字符串的第一个位置(宽字符)
wcsspn 返回包含第二个字符串的初始数目(宽字符)
还有很多。。。
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表