0

我目前有一個函數,它可以獲取目錄中所有文件的列表,然後將它們添加到名爲$ FileListArray的數組中。以逗號分隔的PowerShell輸入功能

我想添加一個選項,讓我指定從arrary中排除的文件擴展名,以便我可以調用如下函數ListFiles -FilesToList「c:\ test」-exclude「avi,txt,bmp」然後這會忽略文件與任何我已經把文件擴展名的

我的功能至今

Function ListFiles($FilesToList){ 

$FileListArray = @() 
    Foreach($file in Get-ChildItem $FilesToList -Force -Recurse | Where-Object {$_.attributes -notlike "Directory"}) 
    { 
     $FileListArray += ,@($file.name,$file.fullname,$File.Extension) 
    } 

    } 

Listfiles -FilesToList "c:\tools" 

回答

0

試試這個:

Function ListFiles($Path,$Exclude) 
{ 
    Get-ChildItem -Path $FilesToList -Force -Recurse | 
    Where-Object {!$_.PSIsContainer -and $_.Extension -notmatch ($Exclude -join '|') } 
} 

Listfiles -Pathc:\tools –Exclude avi,txt,bmp 
+0

感謝這工作,你可以指向我一個artical或一些解釋這些命令的東西!$ _。PSIsContainer和$ _。擴展-notmatch($排除-join'|'),我剛纔沒有看到任何東西這個,我只是主要通過做。 – justinf 2012-07-16 09:11:11

+0

PSIsContainer是一個屬性,用於告訴您當前對象是否爲容器對象(如果是文件系統提供程序的文件夾)或文件。鍵入'help about_Join'以獲取有關連接運算符的更多信息。 – 2012-07-16 09:13:25

+0

好的謝謝感謝使得它更清晰和!意思是不是,所以不是一個容器,我沒有得到的一件事是連接命令讀取幫助,所以如果我正確地讀它,那麼連接會做到這一點!$ _。PSIsContainer-和$ _。Extension -notmatch(avi,txt, bmp,exe),但是那段代碼不起作用,並且| |意味着它加入管道中的每一件事物。再次抱歉打擾你真的很喜歡理解的東西 – justinf 2012-07-16 10:18:58