2012-03-17 59 views
1

最近question管道包含使用我多次去思考,但仍然不知道它是否有一個優雅的解決方案的一個問題:CMD:迭代標準輸入另一個命令

想,我有形成一個命令文件名或目錄列表:dir /B /AD。然後,我想將命令的結果傳給一個迭代器,它將對每個文件名進行操作。

我該怎麼辦?

相反管道,一個當然可以使用反引號的for的版本:

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

但我在從標準輸入獲取數據,所以,我不會硬編碼的文件名的來源有興趣在這裏。

回答

1

我碰巧找到了解決自己:

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 
相關問題