如何在Windows上创建批处理文件以根据子字符串和新行从文本文件中写出字符串?

时间:2017-10-20 22:33:54

标签: batch-file grep findstr

人们!

我不确定这是一项非常简单的任务,还是一项非常复杂的任务,但无论如何我都在努力解决这个问题。假设我有一个这样的文本文件:

11111FOO
11111BAR
22222ZOOM
33333FOO
11111CAR

我想在Windows中找出一个命令行,我可以将其放入一个批处理文件中,该文件将从该文件中提取文本字符串并将它们推送到新文件。我会传入前导字符串来搜索,它会从该字符串的结尾到下一个新行。

所以使用上面的例子,如果我说前导字符串是11111,我会得到一个看起来像这样的新文本文件:

FOO
BAR
CAR

其他一切都会被忽略。

谢谢!

1 个答案:

答案 0 :(得分:2)

如果输入文件中没有潜在的毒药字符,那么这可能就足够了:

@(For /F "UseBackQ Delims=" %%A In ("input.txt") Do @(Set "an=%%A"
    For /L %%B In (%%A 1 %%A) Do @Call Echo %%an:*%%B=%%))>"output.txt"

Magoo的补充:

@Echo Off
(For /F "UseBackQ Delims=" %%A In ("q46858215.txt") Do (Set "an=%%A"
    For /L %%B In (%%A 1 %%A) Do Call Echo %%an:*%%B=%%))>"Output1.txt"

If "%~1"=="" GoTo :Next
(For /F "Delims=" %%A In ('FindStr/BLC:"%~1" "q46858215.txt"') Do (
    Set "an=%%A"
    For /L %%B In (%%A 1 %%A) Do Call Echo %%an:*%%B=%%))>"Output2.txt"

:Next
(For /F "UseBackQ Delims=" %%A In ("q46858215.txt") Do (Set "an=%%A"
    For /L %%B In (%%A 1 %%A) Do Echo %%B))>"Output3.txt"

我使用了包含OP数据的名为q46858215.txt的文件进行测试。

生成三个输出文件:

Output1.txt:Compo的原文
Output2.txt:过滤以隔离以开头的行(第一个参数到例程)
Output3.txt:Compo的原始版本反向显示已隔离的数字