Recherche de fichier récursive à l’aide de PowerShell

Je recherche un fichier dans tous les dossiers.

Copyforbuild.bat est disponible à de nombreux endroits et je voudrais effectuer une recherche récursive.

 $File = "V:\Myfolder\**\*.CopyForbuild.bat" 

Comment puis-je le faire dans PowerShell?

Utilisez l’applet de commande Get-ChildItem avec le commutateur -Recurse :

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

Lorsque vous recherchez des dossiers dans lesquels vous pouvez obtenir une erreur en fonction de la sécurité (par exemple, C:\Users ), utilisez la commande suivante:

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

Je l’utilise pour rechercher des fichiers, puis PowerShell affiche le chemin complet des résultats:

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

Vous pouvez toujours utiliser le caractère générique * dans FolderName et / ou FileName.fileExtension . Par exemple:

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

L’exemple ci-dessus recherchera n’importe quel dossier du lecteur C:\ commençant par le mot Folder . Donc, si vous avez un dossier nommé FolderFoo et FolderBar PowerShell affichera les résultats de ces deux dossiers.

La même chose vaut pour le nom de fichier et l’extension de fichier. Si vous souhaitez rechercher un fichier avec une certaine extension, mais ne connaissez pas le nom du fichier, vous pouvez utiliser:

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

Ou vice versa:

 dir -Path C:\FolderName -Filter FileName.* -Recurse | %{$_.FullName} 
 Get-ChildItem V:\MyFolder -name -recurse *.CopyForbuild.bat 

Travaillera aussi

Filtre à l’aide de caractères génériques:

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

Filtrage à l’aide d’une expression régulière:

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

Essaye ça:

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