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

[原创] 批处理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. )
复制代码
1

评分人数

回复 14# Batcher


    谢谢batcher
智慧是创造财富的唯一保障!

TOP

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

谁能给我个扩展参数的链接%~1那个~不是很明白
智慧是创造财富的唯一保障!

TOP

回复 11# BS0小陈


    这种比较是依据字符集的比较的,好像是UNICODE吧(这类东西看的比较少)
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

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

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

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 判断时,我们就不能用""""(引号)括起来了要不就是字符了。通常用引号时个好习惯但是这里要是

想判断数字比较的话旧得不加引号了。

TOP

回复 9楼 的帖子

明白了一些,不过关于16进制还是再过些日子再接触吧,现在先记住用法,以后再深入,谢谢了

TOP

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

http://bbs.bathome.net/viewthread.php?tid=12329&highlight=
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

有些不明白,汉字和字母之间是怎么进行比较的,(用什么进行比较的)

TOP

这是个学习的好地方,对一些细节的东西解释的很透,都是通过深入研究不断摸索,积累下的经验之谈!

TOP

第一次听说还能这样用 呵呵

TOP

真是学到不少好东西!

TOP

第一个最实用...

TOP

呵呵,这个很早写的了,曾经是为另外一个论坛写的...

TOP

回复 1# 的帖子

第三个不错!!!!支持一个!

TOP

返回列表