通过管道连接到 findstr 的输入

2024-05-12

我有一个文本文件,其中包含宏名称列表(每行一个)。我的最终目标是打印宏名称在当前目录的文件中出现的次数。

宏的名称位于C:\temp\macros.txt.

type C:\temp\macros.txt在命令提示符下可以正常打印列表。

现在我想将该输出通过管道传输到标准输入findstr.

type C:\temp\macros.txt | findstr *.ss(ss 是我在其中查找宏名称的文件类型)。

这似乎不起作用,我没有得到任何结果(非常快,它似乎根本没有尝试)。findstr <the first row of the macro list> *.ss确实有效。

我也尝试过findstr *.ss < c:\temp\macros.txt没有成功。


我认为你有点困惑如何findstr作品。它以文件名(模式)或标准输入的形式获取输入(查找内容 - 不是要查找的内容),但您要查找的内容是always在命令行上作为参数给出findstr.

findstr foo xyz.txt

找到字符串foo在文件中xyz.txt.

type meh.txt | findstr x

找到字符串x在上一个命令的输出中(在本例中为文件的内容meh.txt– 很好的浪费type命令,非常类似于常见的滥用cat).

既然你在之后counts我建议采用不同的方法,而不是宏名称出现的实际行。这假设包含宏的文件每行列出一个宏:

for /f "delims=" %x in (macros.txt) do @(echo %x: & find /c "%x" *.ss)

The for循环逐行迭代文件的内容。然后它会继续打印您正在搜索并执行的名称find /c它实际上计算匹配行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过管道连接到 findstr 的输入 的相关文章

随机推荐