一个好老好老的老程序员了。
全部博文(915)
分类: WINDOWS
2013-01-13 14:41:54
★电脑综合★ 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的特殊应用(时间&字母对比命令)
@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