CMD:迭代stdin从另一个命令pipe道

最近的一个问题包含了我多次想到的问题,但仍然不知道它是否有一个优雅的解决scheme:

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

我该怎么做?

可以使用反向版本的for代替pipe道:

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

但是我对从stdin获取数据感兴趣,所以我不会硬编码文件名的来源。

我碰巧找到了一个解决方案:

 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