2014-10-12 72 views
0

非常初学者的问题,但我会很感激一些帮助。如何对文件夹中的每个项目执行功能?

我有一个文件夹。我有一个功能,improve。我想将该功能应用于文件夹中的每个文件。我已经Google了这个简单的问题,但我发现的解决方案似乎没有工作。我该怎么办?

+0

关于如何编写接受管道输入的函数的信息:http://blogs.technet.com/b/heyscriptingguy/archive/2010/12/31/write- powershell-functions-that-accept-pipelined-input.aspx – JohnLBevan 2014-10-12 16:56:17

回答

2

事情是这样的 -

dir -path C:\stuff | ForEach-Object {improve $_} 

如果你让你的功能支持对象的管道,那么你可以做到这一点 -

dir -path C:\stuff | improve 

这里有一个简单的例子,如何做到这一点 -

function improve ($FileItem) { 
    process { 
     if ($_) {$FileItem = $_} 
     Write-Host $FileItem 
    } 
} 
+1

注意:如果文件夹包含任何子文件夹,则需要添加一些代码以确认每个“$ _”是文件而不是文件夹。像'| Where-Object {Test-Path -PathType Leaf $ _。FullName} |'放在'ForEach-Object'之前就可以做到。 – iCodez 2014-10-12 14:20:13

相关问题