如果文本文件中的值小于 X,请执行以下操作

Posted

技术标签:

【中文标题】如果文本文件中的值小于 X,请执行以下操作【英文标题】:If a value in a text file less than X do the following 【发布时间】:2022-01-03 20:35:51 【问题描述】:

有一个名为“Settings.txt”的文件,该文件包含很多行,包括以下变量行:

X 100

这一行的数字是可变部分,“X”是固定文本。

我需要检查该数字是否为 (小于 100) OR (等于或大于 100) 然后基于结果 > 转到 A 或 B。

脚本可能是这样的:

IF >> "X 100" in "D:\Settings.txt" GEQ 100 goto A else goto B
:A
@echo the value is equal or greater than 100
pause & goto continue
:B
@echo the value is less than 100
pause
:continue
#the rest of the script

【问题讨论】:

【参考方案1】:

需要一种从Settings.txt 文件中读取的机制来获取号码。

@ECHO OFF
FOR /F "tokens=1,2" %%A IN ('findstr.exe /B "X [:digit:]+" "Settings.txt"') DO (SET "NUM=%%~B")
ECHO NUM is set to %NUM%
IF  %NUM% GEQ 100 (GOTO ALABEL) ELSE (GOTO BLABEL)
:ALABEL
    ECHO Do greater than or equal stuff
    GOTO TheEnd
:BLABEL
    ECHO Do less than stuff
    GOTO TheEnd
:TheEnd
EXIT /B 0

【讨论】:

findstr 不支持\d等正则表达式。 @T3RR0R,它可能不“支持”它,但它似乎找到了正确的字符串。我将其更改为findstr.exe /? 信息中记录的内容。它也有效。 它的工作是偶然的,因为您搜索X 和/或文字字符串\d+。正确的形式(如果正则表达式有效)是findstr /BRC:"X \d+ @lit 阅读我在How to use OR operator with command FINDSTR from a Windows command prompt? 上的回答可能会对您有所帮助。FINDSTR 的正则表达式语法非常特殊。建议忘记 Perl 兼容的正则表达式中已知的所有内容。即使[0-9] 不仅匹配0123456789,而且还匹配¹²³,这是任何熟悉Perl 正则表达式语法的人都不会想到的。 (PS:解决方案是/B /R /C:"X [0123456789][0123456789]*"。) PPS:我还没有投反对票。 @KJ,好的,我删除了路径,直到找出它不起作用的原因。

以上是关于如果文本文件中的值小于 X,请执行以下操作的主要内容,如果未能解决你的问题,请参考以下文章

提取 2 个集合/文件之间的唯一值

Java - 如果单词以用户输入的分隔符结尾,则执行 x

C#读取文本文件并将值存储在不同的列表中

如何使用文本文件中的数据集在Java中绘制折线图?

对多个文本文件执行相同的操作

我们可以对 hive 中的“文本文件”执行 crud 操作吗