★电脑综合★ 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的特殊应用(时间&字母对比命令)
转载请注明
一、直接对日期大小进行比较。
比如,我要查找当前目录下,在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 <nul)
测试代码: 复制内容到剪贴板 代码:@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_!
转自: http://blog.chinaunix.net/uid-78707-id-3473907.html