如何创建批处理代码来过滤所有 txt 文件的内容并根据过滤后的文本添加句子

如何创建批处理代码来过滤所有 txt 文件的内容并根据过滤后的文本添加句子

我不熟悉批处理,但我知道如何复制粘贴并将文本文件移动到另一个文件夹...现在唯一需要做的就是在复制之前在所有 txt 文件中添加基于某些关键词的文本...

情况是这样的,我有一个文件夹每天自动生成 txt 文件。我确实做了一个批处理,每天在特定时间将它们复制到另一个文件夹。

但是,在执行此操作之前,我必须编辑文本文件的内容,无论第二行包含 A123 的哪个部分,都需要在最后一行或文本末尾添加一个句子“Dept. A”。如果包含 B123,则同样如此,然后在文本中添加不同的最后一句话。

所以我的想法是过滤所有 txt 文件,然后添加符合过滤条件的文本。

那么,这能做到吗?

我尝试了下面的批处理代码,但返回错误 = 文件名、目录名或卷标语法不正确。

@echo off
findstr /c:"^[^ ][^ ]*A123" (*.txt) do type Dept A >> (*.txt)
exit /b

我需要添加或更改什么?

答案1

评论 :这只是为了通过拖放操作测试一个文件。

例如,如果我们有如下输入文件:


Hello
Other Stuff here A123
Line 3....
Line 4.....
Line 5......
Line 6.......

使用此批处理代码,您可以获得如下输出:


Hello
Other Stuff here A123
Line 3....
Line 4.....
Line 5......
Line 6.......
Dept. A

您应该将一个文件拖放到此批处理文件上进行测试:

@echo off
Title Read an InputFile line by line and match condition in order to add something at the end of file
Set "OutputFile=%~dp0OutputFile.txt"
If Exist "%OutputFile%" Del "%OutputFile%"
Set "InputFile=%1"
If Not Defined InputFile ( echo(You should Drag and Drop a file on this batch file "%~nx0" ... & Timeout /T 5 /Nobreak>nul & Exit /B)
Setlocal EnableDelayedExpansion
<"!InputFile!" (
    @for /f %%i in ('type "!InputFile!"^|find /c /v ""') do @for /l %%j in (1 1 %%i) do (
        Set "line=" & set /p "line="
        echo(!line! | find /I "A123" && Set "Word2Insert=Dept. A" && echo(!line!>>"!OutputFile!"
        ) || (
            echo(!line!>>"!OutputFile!"
        )
    )
)
echo(!Word2Insert!>>"!OutputFile!"
Start "" /MAX "!OutputFile!"

相关内容