2011-12-30 53 views

回答

266

使用Get-ChildItem cmdlet與-Recurse開關:

Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse -ErrorAction SilentlyContinue -Force 
+0

似乎有一個問題,如果它會運行到您無權訪問的目錄中,整個搜索會因流程退出而中止。有沒有辦法解決這個問題? – deed02392 2013-06-20 11:24:14

+4

嘗試將ErrorAction參數設置爲Continue或SilentlyContinue(如果它的值不像前面提到的那樣)。 – 2013-06-20 11:56:54

+11

做一件簡單的事情: 'cd v:\ MyFolder'後面跟着 'ls -r -inc CopyForBuild.bat' – 2014-08-14 21:57:09

2

試試這個:

Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse | Where-Object { $_.Attributes -ne "Directory"} 
+1

您也可以使用'| Where-Object {!$ _PSIsContainer}'排除文件夾 – Gargravarr 2016-06-17 11:23:59

8
Get-ChildItem V:\MyFolder -name -recurse *.CopyForbuild.bat 

此外還將努力

21

我知道這個問題是老了,但我可以不要對Shay Levy的回答發表評論。

當搜索文件夾,你就可能會基於安全性的錯誤(例如,C:\Users)使用下面的命令:使用通配符

Get-ChildItem -Filter CopyForBuild* -Include *.bat,*.cmd -Exclude *.old.cmd,*.old.bat -Recurse 

過濾

Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse -ErrorAction SilentlyContinue -Force 
4

過濾器使用正則表達式

Get-ChildItem -Path "V:\Myfolder" -Recurse 
| Where-Object { $_.Name -match '\ACopyForBuild\.[(bat)|(cmd)]\Z' } 
13

我用它來查找文件,然後讓PowerShell顯示結果整個路徑:

dir -Path C:\FolderName -Filter FileName.fileExtension -Recurse | %{$_.FullName} 

你總是可以使用通配符*在文件夾名稱和/或FileName.fileExtension。例如:

dir -Path C:\Folder* -Filter File*.file* -Recurse | %{$_.FullName} 

上面的例子將搜索在C:\驅動字Folder開頭的任何文件夾。所以,如果您有一個名爲FolderFooFolderBar的文件夾,PowerShell將顯示來自這兩個文件夾的結果。

同樣適用於文件名和文件擴展名。如果你想搜索與特定擴展名的文件,但不知道該文件的名稱,你可以使用:

dir -Path C:\FolderName -Filter *.fileExtension -Recurse | %{$_.FullName} 

或相反:

dir -Path C:\FolderName -Filter FileName.* -Recurse | %{$_.FullName} 
+2

我覺得這個答案非常有用,因爲它解決了一個特定的用例 - 實際上想要使用您正在尋找的文件。 |給你的文件的全名是在其他答案中缺少的東西。 – Sanity1123 2017-08-01 15:17:29