我需要创建一个批处理文件,它会在一些日志文件中显示特定字符串后打印的字符串。 例如:我有一个日志文件,其中一行以字符串&#34结尾;计算数字:XX"。我想创建一个批处理文件,该文件将转到该日志,找到该字符串并仅将XX部分打印到屏幕上(XX是一些偶尔会改变的数字)。任何想法最好的方法是什么? 非常感谢帮助,提前谢谢!
答案 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
会执行该行尾检查(理论上 - 我还没有检查过) - 注意连续三个点。
如果有数百万行,这将会非常缓慢 - 除非目标字符串在文件中很早。
您提供的信息越多,可以设计的解决方案就越好。