如何将字符串与整数进行比较?

时间:2012-11-21 23:22:57

标签: string batch-file comparison integer

我有这个:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set bla="-666"
set zzz="333"
if !zzz! LSS !bla! echo lesser
pause

给我“较小”,这是错误的。我知道这是因为ASCII值。但是比较它们的方式是什么,好像它们是数字一样?

修改

更多代码:

set mn=99999
for /f "tokens=1-9" %%a in (%%g) do (
set zzz=%%d
)
if "!zzz!" LSS "!mn!" set mn=!zzz!

到目前为止,以下答案都没有给我正确的结果......

3 个答案:

答案 0 :(得分:2)

这对我有用

@echo off
set bla=-666
set zzz=333
if %zzz% LSS %bla% echo lesser
pause >nul

无需报价或延迟扩展。

答案 1 :(得分:0)

设置var时,你正在错误地使用blackquotes,VAR =“CONTENT”仅适用于特殊情况,但不适用于此。

@echo off
set /A "bla=-666"
set /A "zzz=333"
if %zzz% LSS %bla% echo lesser
pause

注意我已经使用blackquotes来封闭变量,内容没有任何黑名单。

记住在比较数字时不要在比较中使用黑色引号,如下所示:

if "%zzz%" LSS "%bla%" echo lesser

答案 2 :(得分:0)

这适合我,删除引号然后比较。

@echo off
setlocal ENABLEDELAYEDEXPANSION
set bla="-666"
set zzz="333"
for %%a in (!bla!) do set /a bla=%%~a+0
for %%a in (!zzz!) do set /a zzz=%%~a+0
echo !bla! !zzz!
if !bla! LSS !zzz! (
    echo lesser
) else (
    echo greater
)   
pause