findstr 在一行中显示匹配项

findstr displays matches in one line

我有两个文件:

1.txt:

abc
def

2.txt:

abc

请注意2.txt只包含3个字符,没有空行。现在如果我这样做:

findstr /S /I /L /A:02 "abc" *

我得到这个结果:

1.txt:abc
2.txt:abc

这是我所期望的。然而,在将 1.txt 重命名为 uno.txt 并将 2.txt 重命名为 duo.txt (从而更改文件搜索顺序)和 运行 相同的命令后,我得到了这个:

duo.txt:abcuno.txt:abc

结果在一行中,而我和以前一样期待两行。当然,如果我在 duo.txt 的末尾添加新行,那么输出就可以了,但是如何在不修改文件的情况下做到这一点呢? findstr 中有一些 "force result in new line" 选项吗?

您可以尝试使用 FOR 循环遍历文件并将每个文件的内容通过管道传输到 FINDSTR

像这样:

@ECHO OFF

FOR /R %%f IN (*.txt) DO (
  TYPE %%f | FINDSTR /S /I /L "abc"
)