批处理比较数值大小 lss,equ和gtr的用法 if中gtr的特殊应用

简介: 转自:http://hi.baidu.com/fairsky007/blog/item/0d8a10850aad1124c75cc3e3.html 批处理比较数值大小 lss,equ和gtr的用法 电脑综合 2010-04-17 14:18:39 阅读196 评论0 ...
转自: http://hi.baidu.com/fairsky007/blog/item/0d8a10850aad1124c75cc3e3.html

批处理比较数值大小 lss,equ和gtr的用法

电脑综合 2010-04-17 14:18:39 阅读196 评论0    字号: 订阅

     EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于

比较大小.bat的源程序如下:

@echo off
set /p 第一个数=请输入第一个数- c% F. C2 k: ~# R
set /p 第二个数=请输入第二个数
if %第二个数% lss %第一个数% goto hero7 |! U; ~8 ?5 ?7 p9 g6 v. Y3 w" K0 v
if %第二个数% equ %第一个数% goto her
if %第二个数% gtr %第一个数% goto he9 @! i8 q& c; j; Z/ Q% ]
pause2 W) H7 w/ R$ @   g8 P
exit
:hero& b8 K1 _5 C' U0 A/ l% D
echo 第一个数比第二个数大!
pause# A6 \8 X9 P) t- B9 Z- g2 e1 a
%0
:her' t) K1 j. h# L
echo 第一个数等于第二个数!
pause
%0
:he- o$ e* U# ]" }4 |! V% ^" c
echo 第一个数比第二个数小!
pause
%07 \! s- e$ [0 E6 @
: T+ d6 Y# o0 [" H4 P% C

比较大小另 版.bat 的源程序如下:
5 B. b6 H8 i/ D* L
@echo off; R% @1 ~% g' W
set /p 第一个数=请输入第一个数
set /p 第二个数=请输入第二个数
if %第二个数% lss %第一个数% goto hero
if %第二个数% equ %第一个数% goto her' N( d7 j   i$ r8 e" A
if %第二个数% gtr %第一个数% goto he" h2 ~4 P2 m' V
:hero0 h( k, ?) \( C" t, \
echo 第一个数比第二个数大!5 a4 i$ L7 p% M; e% ]! T
pause
goto end
:her& ~2 r' Q7 X! g: j0 I& x
echo 第一个数等于第二个数!
pause$ k4 |( v4 B: _$ `" ~
goto end
:he   ^3 U/ K* S" W- D7 o: t
echo 第一个数比第二个数小!
pause
goto end
:end. t; R( v+ H# l4 C0 l( f( _. q# i
exit





命令行下如何用批处理比较数据大小?


set var1=3
set var2=2
if %var1% GTR %var2% goto ...

if /?:
执行批处理程序中的条件处理。
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
NOT             指定只有条件为 false 的情况下,Windows 才
应该执行该命令。
ERRORLEVEL number 如果最后运行的程序返回一个等于或大于
指定数字的退出编码,指定条件为 true。
string1==string2   如果指定的文字字符串匹配,指定条件为 true。
EXIST filename 如果指定的文件名存在,指定条件为 true。
command           如果符合条件,指定要执行的命令。如果指定的
条件为 FALSE,命令后可跟一个执行 ELSE
关键字后的命令的 ELSE 命令。
ELSE 子句必须在 IF 之后出现在同一行上。例如:
IF EXIST filename. (
del filename.
) ELSE (
echo filename. missing.
)
因为 del 命令需要用一个新行终止,以下子句不会有效:
IF EXIST filename. del filename. ELSE echo filename. missing
由于 ELSE 命令必须与 IF 命令的尾端在同一行上,以下子句也
不会有效:
IF EXIST filename. del filename.
ELSE echo filename. missing
如果都放在同一行上,以下子句有效:
IF EXIST filename. (del filename.) ELSE echo filename. missing
如果命令扩展被启用,IF 会如下改变:
IF [/I] string1 compare-op string2 command
IF CMDEXTVERSION number command
IF DEFINED variable command
其中, compare-op 可以是:
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
而 /I 开关(如果指定)说明要进行的字符串比较不分大小写。
/I 开关可以用于 IF 的 string1==string2 的形式上。这些
比较都是通用的;原因是,如果 string1 和 string2 都是
由数字组成的,字符串会被转换成数字,进行数字比较。
CMDEXTVERSION 条件的作用跟 ERRORLEVEL 的一样,除了它
是在跟与命令扩展有关联的内部版本号比较。第一个版本
是 1。每次对命令扩展有相当大的增强时,版本号会增加一个。
命令扩展被停用时,CMDEXTVERSION 条件不是真的。
如果已定义环境变量,DEFINED 条件的作用跟 EXISTS 的一样,
除了它取得一个环境变量,返回的结果是 true。
如果没有名为 ERRORLEVEL 的环境变量,%ERRORLEVEL%
会扩充为 ERROLEVEL 当前数值的字符串表达式;否则,您会得到
其数值。运行程序后,以下语句说明 ERRORLEVEL 的用法:
goto answer%ERRORLEVEL%
:answer0
echo Program had return code 0
:answer1
echo Program had return code 1
您也可以使用以上的数字比较:
IF %ERRORLEVEL% LEQ 1 goto okay
如果没有名为 CMDCMDLINE 的环境变量,%CMDCMDLINE%
将在 CMD.EXE 进行任何处理前扩充为传递给 CMD.EXE 的原始
命令行;否则,您会得到其数值。
如果没有名为 CMDEXTVERSION 的环境变量,
%CMDEXTVERSION% 会扩充为 CMDEXTVERSION 当前数值的
字串符表达式;否则,您会得到其数值。

IF (DOS命令)

  执行批处理程序中的条件处理。

  IF [NOT] ERRORLEVEL number command

  IF [NOT] string1==string2 command

  IF [NOT] EXIST filename command

  NOT 指定只有条件为 false 的情况下, Windows XP 才

  应该执行该命令。

  ERRORLEVEL number 如果最后运行的程序返回一个等于或大于

  指定数字的退出编码,指定条件为 true。

  string1==string2 如果指定的文字字符串匹配,指定条件为 true。

  EXIST filename 如果指定的文件名存在,指定条件为 true。

  command 如果符合条件,指定要执行的命令。如果指定的

  条件为 FALSE,命令后可跟一个执行 ELSE

  关键字后的命令的 ELSE 命令。

  ELSE 子句必须在 IF 之后出现在同一行上。例如:

  IF EXIST filename. (

  del filename.

  ) ELSE (

  echo filename. missing.

  )

  因为 del 命令需要用一个新行终止,以下子句不会有效:

  IF EXIST filename. del filename. ELSE echo filename. missing

  由于 ELSE 命令必须与 IF 命令的尾端在同一行上,以下子句也

  不会有效:

  IF EXIST filename. del filename.

  ELSE echo filename. missing

  如果都放在同一行上,以下子句有效:

  IF EXIST filename. (del filename.) ELSE echo filename. missing

  如果命令扩展名被启用,IF 会如下改变:

  IF string1 compare-op string2 command

  IF CMDEXTVERSION number command

  IF DEFINED variable command

  其中,比较运算符可以是:

  EQU - 等于

  NEQ - 不等于

  LSS - 小于

  LEQ - 小于或等于

  GTR - 大于

  GEQ - 大于或等于

  及 /I 开关;如果该开关被指定,则说明要进行的字符串比较不分

  大小写。/I 开关可以用于 IF 的 string1==string2 的形式上。这些

  比较都是通用的;原因是,如果 string1 和 string2 都是由数字

  组成的,字符串会被转换成数字,进行数字比较。

  CMDEXTVERSION 条件的作用跟 ERRORLEVEL 的一样,除了它

  是在跟与命令扩展名有关联的内部版本号比较。第一个版本

  是 1。每次对命令扩展名有相当大的增强时,版本号会增加一个。

  命令扩展名被停用时,CMDEXTVERSION 条件不是真的。

  如果已定义环境变量,DEFINED 条件的作用跟 EXISTS 的一样,

  除了它取得一个环境变量,返回的结果是 true。

  如果没有名为 ERRORLEVEL 的环境变量,%ERRORLEVEL%

  会扩充为 ERROLEVEL 当前数值的字符串表达式;否则,您会得到

  其数值。运行程序后,以下语句说明 ERRORLEVEL 的用法:

  goto answer%ERRORLEVEL%

  :answer0

  echo Program had return code 0

  :answer1

  echo Program had return code 1

  您也可以使用以上的数字比较:

  IF %ERRORLEVEL% LEQ 1 goto okay

  如果没有名为 CMDCMDLINE 的环境变量,%CMDCMDLINE%

  将在 CMD.EXE 进行任何处理前扩充为传递给 CMD.EXE 的原始

  命令行;否则,您会得到其数值。

  如果没有名为 CMDEXTVERSION 的环境变量,

  %CMDEXTVERSION% 会扩充为 CMDEXTVERSION 当前数值的

  字串符表达式;否则,您会得到其数值。

if中gtr的特殊应用(时间&字母对比命令)

2009年05月06日 星期三 16:49
if中gtr的特殊应用作者:youxi01
转载请注明

一、直接对日期大小进行比较。
比如,我要查找当前目录下,在2005-5-30以后的文件,则可以这样写:
复制内容到剪贴板 代码:

@echo off
for %%i in (*) do if %%~ti gtr 2005-05-30 echo %%~nxi
pause>nul

二、对字母直接进行比较。
复制内容到剪贴板 代码:

@echo off
call :echo c o
echo.
call :echo d k
pause>nul
:echo startw endw
echo %1 到 %2 之间的字母有:
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 (
if %%i geq %1 if %%i leq %2 set /p=%%i

三、更奇妙的是,汉字和英文字也可以比较“大小”---找出字符串中的汉字
测试代码: 复制内容到剪贴板 代码: @echo off
setlocal enabledelayedexpansion
set "str=我bat是home好.cn人"
call :test "%str%"
echo 提取出的汉字有:%cstr%
pause>nul
:test
set "var=%~1"
for /l %%i in (0 1 20) do (
set "var_=!var:~%%i,1!"
if "!var_!"=="" goto :eof
if !var_! gtr Z set cstr=!cstr!!var_!
目录
相关文章
|
Windows
DOS - 批处理之 for /f 中的 delims 和 tokens
DOS - 批处理之 for /f 中的 delims 和 tokens
1601 0
DOS - 批处理之 for /f 中的 delims 和 tokens
|
Shell
Shell 字符串操作(截取、替换、去头、去尾)
Shell 字符串操作(截取、替换、去头、去尾)
1753 0
|
XML 前端开发 网络协议
WebService 教程(包含项目实践)
Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
WebService 教程(包含项目实践)
BAT 批处理命令-字符串转化为数字并进行加减运算实例演示,字符串截取数字并进行加减运算
BAT 批处理命令-字符串转化为数字并进行加减运算实例演示,字符串截取数字并进行加减运算
1604 0
BAT 批处理命令-字符串转化为数字并进行加减运算实例演示,字符串截取数字并进行加减运算
|
编译器 C# Windows
Inno Setup制作安装包教程
Inno Setup制作安装包教程
4599 0
|
Windows
DOS 批处理 setlocal命令、endlocal命令详解
setlocal这是一个命令,它开始局部化环境更改,通常在批处理文件中使用,以确保在脚本中所做的任何环境更改(例如设置或修改环境变量)不会影响到调用此批处理的上下文或其他批处理文件
967 14
|
Linux 数据处理 数据库
深入探索Linux的package-cleanup命令
`package-cleanup`是Linux(尤其是RPM系统如CentOS)中的实用工具,用于清理和管理已安装的RPM包。它列出依赖问题、重复包,删除旧内核,并找出孤立软件包。关键参数包括`--problems`, `--dupes`, `--cleandupes`, `--leaves`, `--orphans`和`--oldkernels`。使用时注意备份,谨慎操作,并可结合`yum`定期维护系统。例如,`package-cleanup --oldkernels --count=2`用于删除除最新两个内核外的旧内核。
|
数据可视化 API
【Qt 学习笔记】Qt常用控件 | 多元素控件 | Tree Widget的说明及介绍
【Qt 学习笔记】Qt常用控件 | 多元素控件 | Tree Widget的说明及介绍
1278 2
|
编译器 C++
使用Visual Studio 2022 创建lib和dll并使用
本文介绍了如何在Visual Studio 2022中创建静态库(lib)和动态库(dll),并展示了如何使用这些库。文章详细说明了创建新项目、编写代码、生成库文件、配置项目属性以及编写测试代码的步骤,并提供了相应的截图和代码示例。作者还分享了在创建和使用库的过程中遇到的一些问题及其解决方案。
5312 0
使用Visual Studio 2022 创建lib和dll并使用