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

String 如何将字符串与整数进行比较?,string,batch-file,comparison,integer,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!"

我有这个:

@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!

到目前为止,下面的答案都没有给出正确的结果…

您在设置var时使用了不正确的黑引号,var=“CONTENT”仅适用于特殊情况,而不是此情况

@echo off
set /A "bla=-666"
set /A "zzz=333"
if %zzz% LSS %bla% echo lesser
pause
注意,我使用了黑引号来括起变量,内容中没有任何黑引号

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

if "%zzz%" LSS "%bla%" echo lesser
这对我有用

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

无需引用或延迟扩展。

这对我很有效,删除引用,然后进行比较。

@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

当我使用set/A“zzz=%%e”时,它失败了?你说的“它失败”是什么意思?与…相比,什么?还是怎样请记住,您只能使用算术运算符(/A)设置数字。如果您尝试设置字符,则设置失败(数值变为0)。不知何故,我无法使用set/A bla=!最终的上面写着失踪的接线员。如果没有/a,它不会给出任何错误,但不会执行我想要的操作。是的,它可以工作。然而,在我的例子中,bla和zzz变量是通过解析字符串返回的,所以它们也是字符串。如果我直接比较它们,它的确切作用就是我在问题中所展示的。这不是一种非常有效的删除引号的方法(考虑一个空字符串
bla=“”
)。您更希望使用
for
-循环来执行此操作,如:
for%%a in(!bla!)do set/a bla=%%~a+0
@EitanT您是否正确。对于变量可以为空(“”)或不带引号的一般情况,使用for更安全。因为我的答案被选中了,所以我编辑了它。