我正在使用 Windows 8 pro 并想做一些我希望很简单的事情。我只想对目录中某种类型的所有文件执行一个程序。没有树,只是在平面目录中。在 Linux 中,我会:
find . -name 'exec c:\user\local\bin\myprog {} \;
我确实花了几个小时与 power shell 搏斗,遇到政策问题、权限等。有什么简单的方法可以实现这一点吗?
我正在使用 Windows 8 pro 并想做一些我希望很简单的事情。我只想对目录中某种类型的所有文件执行一个程序。没有树,只是在平面目录中。在 Linux 中,我会:
find . -name 'exec c:\user\local\bin\myprog {} \;
我确实花了几个小时与 power shell 搏斗,遇到政策问题、权限等。有什么简单的方法可以实现这一点吗?
这很容易,但与使用find
例如不同:
Get-ChildItem -File | Foreach {c:\user\local\bin\myprog $_.fullname}
为了在命令行上做事,别名可以使这更简洁:
ls -file | % {c:\user\local\bin\myprog $_.fullname}
PowerShell 更喜欢焦点狭窄但可以在管道中组合在一起以提供大量功能的命令。此外,PowerShell 管道 .NET 对象,例如 Get-ChildItem 管道 System.IO.FileInfo 对象。然后,您可以使用 Foreach、Where、Select、Sort、Group、Format 等命令来操作通过管道传递的对象。如果您有时间,我建议您查看我的免费电子书Effective PowerShell。