获取文本文件中的最小数字

时间:2014-12-25 19:01:01

标签: batch-file

@echo off
setlocal EnableDelayedExpansion


set numb=99999
for /f "tokens=*" %%l in (numbers.txt) do ( 
    if not !numb! equ 0 (
        if %%l LSS !numb! set "numb=%%l" 
    ) else (
        set "numb=%%l"
    )
)
echo %numb% 

我想要一种更优雅或更好的方法来获取文本文件中的最小数字。 文本文件看起来像这样(numbers.txt):

42142
242
4242
2421
152
321
1214
123
3424
1221

1 个答案:

答案 0 :(得分:1)

实际上,您发布的内容始终显示为0,因为您正在将变量初始化为0,该值已低于您要比较的任何值。

除此之外,批次并没有真正的查询"功能,所以你必须遍历每个值。你的代码非常接近,但如果你想稍微清理它,你可以试试这个:

@echo off
setlocal EnableDelayedExpansion

REM Initialize to a high value.
set numb=99999
for /f "tokens=*" %%l in (numbers.txt) do (
    REM Only need to compare the current against the processing value.
    if %%l LSS !numb! set "numb=%%l" 
)
echo %numb% 
endlocal

或者,您可以缩短整个FOR声明:

@echo off
setlocal EnableDelayedExpansion

set numb=99999
for /f %%l in (numbers.txt) do if %%l LSS !numb! set "numb=%%l" 
echo %numb%

endlocal