CMD:迭代标准输入另一个命令

问题描述:

最近question管道包含使用我多次去思考,但仍然不知道它是否有一个优雅的解决方案的一个问题:CMD:迭代标准输入另一个命令

想,我有形成一个命令文件名或目录列表:dir /B /AD。然后,我想将命令的结果传给一个迭代器,它将对每个文件名进行操作。

我该怎么办?

相反管道,一个当然可以使用反引号的for的版本:

for /F "usebackq" %F in (`dir /B /AD`) do @echo %F 

但我在从标准输入获取数据,所以,我不会硬编码的文件名的来源有兴趣在这里。

我碰巧找到了解决自己:

dir /B /AD | for /F "usebackq" %F in (`findstr "."`) do @echo %F 

这甚至比我想象的要好,因为它允许直接过滤反引号中的表达。例如,要排除一些特定的文件名(.svn和_lib),我可以这样写:

dir /AD /B | for /F "usebackq" %F in (`findstr /V "\.svn _lib"`) do @echo %F