使用powershell以递归方式提取信息

时间:2012-11-06 19:32:15

标签: powershell

我正在使用mediainfo程序从我的文件中提取信息。我可以在Powershell中运行以下命令并返回我想要的信息。我不知道该怎么做是递归地通过每个目录,只看某些扩展。我知道我需要并包含我想要的扩展但不知道该怎么做。

现在可以使用的命令是:

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

stuff.txt包含我要查找的参数。并且x:\pic是包含更多dir的dir,需要搜索。然后将信息附加到output.txt文件。这可以在cmd行上运行,但它会提取我只想查找.png, .jpg, .bmp个文件的所有内容。

额外的好处是将此脚本放在任何目录中并使其运行。我知道我必须将脚本和txt文件放在同一个目录中,但有一种方法可以像%1那样使用dos。

由于

1 个答案:

答案 0 :(得分:0)

您可以使用过滤器仅返回您要查找的项目。例如,这将列出当前文件夹及其子文件夹中的所有JPG文件:

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

两个关键部分是:

  • ? - Where-Object,仅将匹配的名称传递给管道中的下一个项目
  • % - Foreach-Object,它对管道中的每个项目执行某些操作

正如克里斯蒂安在评论中指出的那样,这是更多的表现:

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

我希望这足以回答你的问题。