Estoy buscando un archivo en todas las carpetas.
Copyforbuild.bat está disponible en muchos lugares, y me gustaría buscar de forma recursiva.
$File = "V:\Myfolder\**\*.CopyForbuild.bat"
¿Cómo puedo hacerlo en PowerShell?
powershell
powershell-2.0
Samselvaprabu
fuente
fuente

cd V:\MyFolderseguido dels -r -inc CopyForBuild.batls -r -ea silentlycontinue -fo -inc "filename.txt" | % { $_.fullname }*) al final del nombre del archivo. ****** LINE1:$File = "Microsoft.OData.Core.NetFX35.V7*"LINE2:$Folder = "C:\Program Files"LINE3:Get-ChildItem -Path $Folder -Filter $File -Recurse -ErrorAction SilentlyContinue -ForceLo uso para buscar archivos y luego hacer que PowerShell muestre la ruta completa de los resultados:
Siempre puede usar el comodín
*enFolderNamey / oFileName.fileExtension. Por ejemplo:El ejemplo anterior buscará cualquier carpeta en la
C:\unidad que comience con la palabraFolder. Entonces, si tiene una carpeta llamadaFolderFooyFolderBarPowerShell mostrará los resultados de ambas carpetas.Lo mismo ocurre con el nombre y la extensión del archivo. Si desea buscar un archivo con una determinada extensión, pero no conoce el nombre del archivo, puede usar:
O viceversa:
fuente
Cuando busque carpetas en las que pueda obtener un error basado en la seguridad (por ejemplo
C:\Users), use el siguiente comando:fuente
También funcionará
fuente
Aquí está el método que finalmente se me ocurrió después de luchar:
Para hacer que la salida sea más limpia (solo ruta), use:
Para obtener solo el primer resultado, use:
Ahora para las cosas importantes:
Para buscar solo archivos / directorios, no use
-Fileo-Directory(vea a continuación por qué). En su lugar, use esto para archivos:y elimine los
-eq $falsedirectorios for. No , no dejar un comodín como se arrastrabin/*.¿Por qué no usar los interruptores integrados? Son terribles y eliminan características al azar. Por ejemplo, para usar
-Includecon un archivo, debe finalizar la ruta con un comodín. Sin embargo, esto desactiva el-Recurseinterruptor sin decirte:Pensaría que eso le daría todos
*.liblos correos electrónicos en todos los subdirectorios, pero solo buscará el nivel superior debin.Para buscar directorios, puede usar
-Directory, pero luego debe eliminar el comodín final. Por alguna razón, esto no se desactivará-Recurse. Es por estas razones que recomiendo no usar las banderas incorporadas.Puede acortar este comando considerablemente:
se convierte
Get-ChildItemtiene un aliasgci-Pathestá predeterminado en la posición 0, por lo que puede hacer la primera ruta de argumento-Recursetiene un alias-s-Includeno tiene taquigrafíafuente
Prueba esto:
fuente
| Where-Object { !$_PSIsContainer }para excluir carpetasFiltrar con comodines:
Filtrar usando una expresión regular:
fuente
'\ACopyForBuild\.(bat|cmd)\Z'?Para agregar a @ user3303020 responder y generar los resultados de búsqueda en un archivo, puede ejecutar
Puede ser más fácil buscar el archivo correcto de esa manera.
fuente