如何使用Powershell对目录中的所有文件执行程序

Pet*_*ner 15 powershell

我正在使用Windows 8专业版,并希望做一些我希望非常简单的事情.我只想对目录中某种类型的所有文件执行一个程序.没有树,只是在平面目录中.在Linux中我会:

find . -name 'exec c:\user\local\bin\myprog {} \;
Run Code Online (Sandbox Code Playgroud)

我真的花了几个小时摔跤电源外壳,遇到政策问题,权限等等.有什么简单的方法可以让这种情况发生吗?

Kei*_*ill 27

这很容易但不同于使用find例如:

Get-ChildItem -File | Foreach {c:\user\local\bin\myprog $_.fullname}
Run Code Online (Sandbox Code Playgroud)

为了在命令行中执行操作,别名可以使这更简洁:

ls -file | % {c:\user\local\bin\myprog $_.fullname}
Run Code Online (Sandbox Code Playgroud)

PowerShell更喜欢焦点狭窄但可以在管道中组合在一起以提供大量功能的命令.此外,PowerShell管道.NET对象,例如Get-ChildItem管道System.IO.FileInfo对象.然后,您可以使用Foreach,Where,Select,Sort,Group,Format等命令来操作传递给管道的对象.如果你有时间,我建议你查看我的免费电子书Effective PowerShell.