2012-11-06 37 views
3

我正在使用mediainfo程序從我的文件中提取信息。我可以在Powershell中運行以下代碼,並返回我想要的信息。我不知道該怎麼做的是遞歸地遍歷每一個目錄,只看到特定的擴展。我知道我需要幷包含我想要的擴展,但不知道如何去做。使用powershell遞歸拉取信息

的作品現在的命令是:

.\mediainfo.i386 --inform=file://x:\stuff.txt x:\pic >>x:\output.txt 

stuff.txt有我要找的參數。而x:\pic是包含更多目錄並且需要搜索的目錄。然後信息被追加到output.txt文件。這適用於cmd行,但它只提取了一切我只想查找的文件.png, .jpg, .bmp

一個額外的好處是將這個腳本放在任何目錄中並讓它運行。我知道我將不得不將腳本和txt文件放在同一個目錄中,但有沒有辦法像%1一樣使用dos。

謝謝

回答

0

您可以使用過濾器來返回您正在查找的項目。例如,這將列出所有在當前文件夾中的JPG文件和子文件夾:

gci -name -recurse . | ? { $_.Contains(".jpg") } | % { "file: " + $_ } 

的兩個關鍵部分是:

  • ? - Where-Object,其中僅通過姓名比賽進行到下一個項目在管道
  • % - Foreach-Object,它做了每個項目的管

基督教在評論中指出,這是更多的執行:

gci -name -recurse . -filter *.jpg | % { "file: " + $_ } 

我希望這足以回答你的問題。

+1

'gci -name -recurse。 -filter * .jpg'性能更高。 –

+0

同意,謝謝。我已經更新了我的答案。 – neontapir

+0

謝謝,現在我試試:gci -name -recurse。 -filter * .jpg,* .png | %{「file:」+ $ _ mediainfo.i386 --inform = file:// x:\ stuff.txt x:\ pic >> x:\ output.txt}我什麼也沒得到。我需要的文件:東西? –