批处理文件:如何刮取某些字符串的日志,然后将其写入另一个文本文件?

时间:2018-04-04 20:35:54

标签: parsing batch-file

我对批量编程的概念比较陌生。我的初步重点是C ++ / C#/ Java。话虽这么说,我的任务是创建一个批处理文件来执行某项任务。我会编写一个程序来执行此操作,但为了方便起见,我要求使用Batch编写一个简单的脚本。

在说,脚本基本上需要解析特定数据字符串的日志(文本文件)。一旦有了这些数据,就需要将它写入另一个文本文件。

日志中将包含大量无用的信息,因此我只是将其缩小到信息转储。每个字符串将由日志中的新行分隔,当它写入另一个文本文件时,每个字符串都需要在其自己的行上写入。

我没有要求别人为我编写脚本,只是一些指导。到目前为止,这就是我提出的所有内容:

@ECHO off
setlocal enabledelayedexpansion

runas /user:administrator

ECHO Beginning file processing...
set "source=C:\Users\me\Desktop\testLogsFolder\testLogsFile.txt"
set "target=C:\Users\me\Desktop\output.txt"
pushd "%source%"
(for /f "tokens=1,* delims=:" %%a in ('find /n /i "myString" testLogsFile.txt > output.txt"')

从这一点来说,我想我需要一个DO命令,而且我还需要一种搜索​​多个字符串的方法。理想情况下,我会在整个日志中查找3或4个字符串。

此外,这些字符串将多次发生,例如:

raw log data
raw log data
myString1 424
raw log data
raw log data
MyString2 Male
MyString3 True
raw log data
raw log data
My String1 239
etc
etc

所以这意味着它需要解析每个字符串并粘贴它,但不会覆盖前一个命名相同的东西(虽然它的值会/可能会不同)。

我考虑过将每个字符串变成一个变量,然后在每次粘贴时覆盖字符串,但我不确定这是否是最有效的方法。

同样,我在这里找不到简单的答案。我对批处理编程非常陌生,只了解基础知识。任何输入都将非常感激。

感谢。

修改 我设法让它运作起来。它肯定没有完成,因为它需要更多的错误处理以及相同字符串类型之间的一些新行(它将解析一个大日志,因此在这些实例中将重复一些字符串及其值需要有一种收集相似字符串的方法)。

这就是我最终使用FINDSTR:

@ECHO OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION

:: variables
SET logs=C:\Users\me\Desktop\testLogsFolder\testLogsFile.txt
SET stringsToLookFor=C:\Users\me\Desktop\testLogsFolder\stringsToLookFor.txt
SET dataOutput=C:\Users\me\Desktop\dataOutput.txt

IF NOT EXIST %logs% (
        ECHO Logs not found
        )  ELSE (
                FINDSTR /G:%stringsToLookFor% %logs% >> %dataOutput%
                )
PAUSE

0 个答案:

没有答案