如何在批处理文件中显示特定字符​​串后出现的字符串?

时间:2014-04-13 07:56:32

标签: string batch-file findstr

我需要创建一个批处理文件,它会在一些日志文件中显示特定字符​​串后打印的字符串。 例如:我有一个日志文件,其中一行以字符串&#34结尾;计算数字:XX"。我想创建一个批处理文件,该文件将转到该日志,找到该字符串并仅将XX部分打印到屏幕上(XX是一些偶尔会改变的数字)。任何想法最好的方法是什么? 非常感谢帮助,提前谢谢!

2 个答案:

答案 0 :(得分:0)

字符串的格式是您感兴趣的部分之前和之后的内容 - 因为它可以解析线的解析方式。

此代码非常强大,如果确实在结尾处,则会在字符串末尾打印数字。

它使用名为repl.bat的帮助程序批处理文件 - 从https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

下载

repl.bat放在与批处理文件相同的文件夹中或放在路径上的文件夹中。

@echo off
type "file.log" | repl ".*Calculated number: (.*)" "$1" a

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL
FOR /f "delims=" %%a IN (q23040271.txt) DO (
 ECHO "%%a"|FIND "Calculated number: " >NUL 2>nul
 IF NOT ERRORLEVEL 1 SET "line=%%a"&GOTO found
)
ECHO target NOT found&GOTO :eof
:found

ECHO %line:~-2%

GOTO :EOF

我使用了一个名为q23040271.txt的文件,其中包含垃圾文本和样本数据供我测试。

这在很大程度上依赖于第一次出现Calculated number:的假设 将是所需的迭代,它将在行的末尾 - 没有检查它实际上是在行的末尾。

替换

 ECHO "%%a"|FIND "Calculated number: " >NUL 2>nul

 ECHO "%%a"|FINDSTR /e /R /c:"Calculated number: ..." >NUL 2>nul

会执行该行尾检查(理论上 - 我还没有检查过) - 注意连续三个点。

如果有数百万行,这将会非常缓慢 - 除非目标字符串在文件中很早。

您提供的信息越多,可以设计的解决方案就越好。