非常初學者的問題,但我會很感激一些幫助。如何對文件夾中的每個項目執行功能?
我有一個文件夾。我有一個功能,improve
。我想將該功能應用於文件夾中的每個文件。我已經Google了這個簡單的問題,但我發現的解決方案似乎沒有工作。我該怎麼辦?
非常初學者的問題,但我會很感激一些幫助。如何對文件夾中的每個項目執行功能?
我有一個文件夾。我有一個功能,improve
。我想將該功能應用於文件夾中的每個文件。我已經Google了這個簡單的問題,但我發現的解決方案似乎沒有工作。我該怎麼辦?
事情是這樣的 -
dir -path C:\stuff | ForEach-Object {improve $_}
如果你讓你的功能支持對象的管道,那麼你可以做到這一點 -
dir -path C:\stuff | improve
這裏有一個簡單的例子,如何做到這一點 -
function improve ($FileItem) {
process {
if ($_) {$FileItem = $_}
Write-Host $FileItem
}
}
注意:如果文件夾包含任何子文件夾,則需要添加一些代碼以確認每個「$ _」是文件而不是文件夾。像'| Where-Object {Test-Path -PathType Leaf $ _。FullName} |'放在'ForEach-Object'之前就可以做到。 – iCodez 2014-10-12 14:20:13
關於如何編寫接受管道輸入的函數的信息: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