@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
答案 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