2014-10-12 65 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

相關問題