最近的一个问题包含了我多次想到的问题,但仍然不知道它是否有一个优雅的解决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