我有这个:
@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!
到目前为止,以下答案都没有给我正确的结果......
答案 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