2

我有这个:

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

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

4

3 回答 3

2

这对我有用

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

无需报价或延迟扩展。

于 2012-11-22T16:08:54.877 回答
0

您在设置 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
于 2012-11-22T00:03:26.967 回答
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
于 2012-11-24T16:05:58.530 回答