首页 > 解决方案 > FINDSTR 查找字符串的文本 START END

问题描述

我有字符串photo="999" price="10" category="1"。我只想得到10. 这意味着我需要以 price=" 开头并以 " 结尾的字符串

@For /F "Tokens=1*Delims==" %%A In ('FindStr /I "^price=" "C:\price.txt" 2^>NUL')Do @Set "Ver=%%~B"
@Echo(%%Ver%% = %Ver% & Pause

标签: windowsbatch-filecmdfindstr

解决方案


@ECHO OFF
SETLOCAL

set "string=photo="999" price="10" category="1""

:: remove quotes
set "string=%string:"=%"
for /f %%a in ("%string:* price=%") do set /a pricefound%%a
set pri
goto :eof

由于我们没有相关文件的代表性样本,因此我们被迫得出这样的结论:要求是 price="anumber"在文件中找到唯一的外观。

所以,由于findstr输出,适当的框架,会选择这一行,我们需要做的就是处理字符串。

这是一种快速而肮脏的方法。它可能足以满足 OP 的目的。

首先,从字符串中删除引号,因为它们有干扰的习惯。

接下来,for /f在字符串处理模式下使用,它对括号中的引用字符串发挥作用。该字符串是原始字符串,减去引号,因此将“Space价格”之前的所有字符替换为,并取结果的第一个标记,从而在示例案例中=10分配给。%%a

=10然后通过简单地连接两个字符串来执行“set /a somevariablename ”。

请注意,如果文件包含类似的行,... pricelastweek="9" ...则可能需要采取其他措施。


推荐阅读