如果文本文件中的值小于 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,请执行以下操作的主要内容,如果未能解决你的问题,请参考以下文章