Gau*_*ier 15 pipe batch-file findstr
我有一个文本文件,其中包含宏名称列表(每行一个).我的最终目标是获取宏名称出现在当前目录文件中的次数.
宏的名字在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过没有成功.
Joe*_*oey 17
我觉得你有点困惑如何findstr运作.它可以作为文件名(模式)或stdin获取输入(查找内容 - 而不是要查找的内容),但是您要查找的内容始终在命令行中作为参数提供findstr.
findstr foo xyz.txt
Run Code Online (Sandbox Code Playgroud)
foo在文件中找到该字符串xyz.txt.
type meh.txt | findstr x
Run Code Online (Sandbox Code Playgroud)
x在前一个命令的输出中找到该字符串(在这种情况下是文件的内容meh.txt- 很好地浪费了type命令,非常类似于常见的误用cat).
由于你是在计数而不是宏名称出现的实际行之后,我建议采用不同的方法.这假设您的包含宏的文件每行列出一个:
for /f "delims=" %x in (macros.txt) do @(echo %x: & find /c "%x" *.ss)
Run Code Online (Sandbox Code Playgroud)
将for在你的文件的内容循环迭代,行明智的.然后它继续打印您正在搜索和执行的名称,该名称find /c实际上对匹配的行进行计数.