从CMD读取文件时使用关系运算符

时间:2015-11-01 13:17:52

标签: batch-file for-loop cmd

我正在尝试创建一个命令行程序,该程序从仅大于(大于)指定文件的文件中输出数字。 比如那里有一个带有大量数字的文件output.txt(每行一个),我需要得到的数量少于5000个。

这是我的代码的一部分,但它没有按预期工作:

CHOICE /C 12

SET /P Comparative_number="Input a number: "

IF %ErrorLevel%==2 GOTO LESS_OPERATION

FOR /F %%A IN (%OutputFile%) DO IF %%A GTR %Comparative_number% ECHO %%A

ECHO. & ECHO End of output & EXIT /B

:LESS_OPERATION

FOR /F %%A IN (%OutputFile%) DO IF %%A LSS %Comparative_number% ECHO %%A

ECHO. & ECHO End of output & EXIT /B

我做错了什么?

1 个答案:

答案 0 :(得分:0)

默认情况下启用命令扩展。但是,如果批处理脚本依赖于命令扩展,就像在 IF 条件中使用GTRLSS一样,建议明确启用它们。

整数必须逐行列在通过环境变量OutputFile引用的文件中,例如:

50
23
478
-3425
9071

有效的批处理代码:

@ECHO OFF
SETLOCAL EnableExtensions
SET "OutputFile=C:\Temp\File With Numbers Listed Line By Line.txt"

ECHO.
ECHO Please choose the comparison:
ECHO.
ECHO 1 ... Greater Than
ECHO 2 ... Smaller Than
ECHO.
CHOICE /C:12 /N /M "Your choice: "
ECHO.

SET "Comparative_number=0"
SET /P "Comparative_number=Input a number: "
ECHO.
IF %ErrorLevel%==2 GOTO LESS_OPERATION

FOR /F "usebackq" %%A IN ("%OutputFile%") DO IF %%A GTR %Comparative_number% ECHO %%A
ECHO.
ECHO End of output
ENDLOCAL
EXIT /B

:LESS_OPERATION
FOR /F "usebackq" %%A IN ("%OutputFile%") DO IF %%A LSS %Comparative_number% ECHO %%A
ECHO.
ECHO End of output
ENDLOCAL
EXIT /B

为什么你的代码与这个稍微修改过的代码相比不起作用很可能取决于输出文件的名称,数字在输出文件中的列出方式以及你如何使用命令 CHOICE