Board logo

标题: [原创] 批处理if命令中gtr的特殊应用 [打印本页]

作者: youxi01    时间: 2007-12-30 22:36     标题: 批处理if命令中gtr的特殊应用

作者:youxi01
转载请注明

一、直接对日期大小进行比较。
比如,我要查找当前目录下,在2005-5-30以后的文件,则可以这样写:
  1. @echo off
  2. for %%i in (*) do    if %%~ti gtr 2005-05-30 echo %%~nxi
  3. pause>nul
复制代码
二、对字母直接进行比较。
  1. @echo off
  2. call :echo c o
  3. echo.
  4. call :echo d k
  5. pause>nul
  6. :echo startw endw
  7. echo %1 到 %2 之间的字母有:
  8. for %%i 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 (
  9.    if %%i geq %1 if %%i leq %2 set /p=%%i <nul)
复制代码
三、更奇妙的是,汉字和英文字也可以比较“大小”---找出字符串中的汉字
测试代码:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "str=我bat是home好.cn人"
  4. call :test "%str%"
  5. echo 提取出的汉字有:%cstr%
  6. pause>nul
  7. :test
  8. set "var=%~1"
  9. for /l %%i in (0 1 20) do (
  10.    set "var_=!var:~%%i,1!"
  11.    if "!var_!"=="" goto :eof
  12.    if !var_! gtr Z set cstr=!cstr!!var_!
  13. )
复制代码

作者: 小竹    时间: 2007-12-30 22:57     标题: 回复 1# 的帖子

第三个不错!!!!支持一个!
作者: youxi01    时间: 2007-12-30 23:13

呵呵,这个很早写的了,曾经是为另外一个论坛写的...
作者: Frank    时间: 2008-1-5 15:34

第一个最实用...
作者: 浅默    时间: 2008-1-18 16:59

真是学到不少好东西!
作者: xxx3212    时间: 2008-1-18 17:14

第一次听说还能这样用 呵呵
作者: 浅默    时间: 2008-1-18 17:29

这是个学习的好地方,对一些细节的东西解释的很透,都是通过深入研究不断摸索,积累下的经验之谈!
作者: wc726842270    时间: 2010-11-27 21:02

有些不明白,汉字和字母之间是怎么进行比较的,(用什么进行比较的)
作者: hanyeguxing    时间: 2010-11-28 00:29

本帖最后由 hanyeguxing 于 2011-10-18 12:31 编辑
原帖由 wc726842270 于 2010-11-27 21:02 发表
有些不明白,汉字和字母之间是怎么进行比较的,(用什么进行比较的)

http://bbs.bathome.net/viewthread.php?tid=12329&highlight=
作者: wc726842270    时间: 2010-11-28 02:02     标题: 回复 9楼 的帖子

明白了一些,不过关于16进制还是再过些日子再接触吧,现在先记住用法,以后再深入,谢谢了
作者: BS0小陈    时间: 2011-10-18 11:06

下面是个人的观点(不知真伪,错了请指出):

由于批处理中不存在定义变量类型,所以就在判断上不容易判断。通常在“”里的多定为字符串,字符串里德大小比较规则:

1.字符串的判断是按顺序,而不是看长度;如字符串里2就大于17

2.字符串里:汉字>字母>数字>符号

3.数字比较:9>8>7>....>1>0,由于第一条所以字符串里2会大于17因为2>1

4.字母的大小:Z>z>Y>y>....>B>b>A>a,值得注意的是大写字母的比较不符合第一条,就是说 b2 大于 B 尽管 B>b ,也就是说

  在多字符比较时B与b是等价的,我们还要往下看但是其他的非大写字母的比较都符合第一条,如 aB2  大于 Ab111111 我们就把前面

  的ab不管大小写一视同仁后面的判断依旧。

5.汉字的比较根据拼音顺序,按字母排序;如“吧”大于“啊啊啊”

6.符号的判断就不清楚了。

那么如果不是字符串,是数字在使用if 判断时,我们就不能用""""(引号)括起来了要不就是字符了。通常用引号时个好习惯但是这里要是

想判断数字比较的话旧得不加引号了。
作者: wc726842270    时间: 2011-10-18 12:29

回复 11# BS0小陈


    这种比较是依据字符集的比较的,好像是UNICODE吧(这类东西看的比较少)
作者: andy七少    时间: 2011-10-20 14:32

谁能给我个扩展参数的链接%~1那个~不是很明白
作者: Batcher    时间: 2011-10-20 22:09

回复 13# andy七少


http://www.bathome.net/viewthread.php?tid=2782#pid22365
作者: andy七少    时间: 2011-10-22 12:20

回复 14# Batcher


    谢谢batcher




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2