2009-04-18 11 views
5

Estoy intentando crear una función que me muestre todas las rutas donde se encuentra un determinado nombre de archivo. La función tomaría un parámetro, ese es el nombre del archivo. El resultado sería una lista de todas las rutas o un mensaje que dice que no hay tal archivo en el sistema.Obtenga que powershell muestre todas las rutas donde se puede encontrar un determinado archivo en una unidad

Soy nuevo en Powershell, y todavía no recibo la sintaxis. He intentado esto:

Get-ChildItem -Path -Include notepad.exe 

Pero eso lancé un mensaje de error. Actualmente estoy tratando de:

$i="notepad.exe" 

Foreach ($i in Get-ChildItem c:\ -Recurse){echo -Path} 

Comienza ahora, que está aún en marcha, no sé qué va a pasar, de verdad.

EDIT: echo'd una enorme cantidad de líneas que acaba de decir "-path" ...

¿Alguien puede ayudar con este problema? Por cierto, estoy ejecutando Powershell 1.0.

Así, para explicar lo que deseo de ver al ejecutar este comando, aquí es un ejemplo de lo que cabe esperar después de buscar * .txt:

C:/foo.txt
C:/A/foobar.txt
C:/A1/foo.txt

Y así sucesivamente, listado de las rutas para todos. archivos txt en mi disco duro. Solo los caminos, uno por línea, no se necesita información adicional.

EDIT2:

Lo he hecho. Voy a dejar esta pregunta para aquellos que hacen buscar esto en el futuro.

La función que utilicé era esto (este ejemplo concreto le entregará una lista de todos los archivos .zip en su disco duro, editar cuando sea necesario):

Get-ChildItem -Path c:\ -Include "*.zip" -Recurse -Force -Name > c:\listOfPaths.txt 

Esto creó un archivo llamado listOfPaths.txt en mi C: \ carpeta y esta contenía una lista de todas las ocurrencias de cualquier archivo que termina con .zip en todas las subcarpetas de mi disco duro.

No se menciona el bit "c: \", pero no me importa.

Edit3:

capar gracias por una versión más completa.

Aquí es el código de capar (o cómo llegué a trabajar, ya que Get-niños no funciona en 1.0)

Get-ChildItem -Path c:\ -Recurse *.txt | Select-Object -Property FullName 
+2

1 a traer de vuelta a 0, no veo nada merecedor de un downvote capar –

+0

gracias, todavía tratando de entender este comando a cabo.. – KdgDev

+1

¿Por qué alguien viola esta publicación y la rechaza? 'Dir * .zip/s> foo.txt' hará lo mismo. – ojblass

Respuesta

9

Dado que es viernes por la noche, decidí jugar con Power Shell para ver si puedo ayudar :) Esto viene bastante cerca de lo que estás pidiendo Creo :

Get-ChildItem -Path c:\ -Recurse *.txt | Select-Object -Property FullName 

Si ayuda, este comando, aparecerá una lista de las propiedades de cualquier objeto que será devuelto por Get-ChildItem:

Get-ChildItem | Get-Member 
+1

Powershell e rror: Get-Children no es un cmdlet reconocido, función ... ¿Estás ejecutando Powershell 2.0 por casualidad? – KdgDev

+2

Usó Get-ChildItem y funcionó a las mil maravillas. Impresionante, gracias por la ayuda – KdgDev

+1

Bienvenido. Me alegro de que funcionó. –

1

ls c: \ r | ? {$ _. name -eq "notepad.exe"}

+0

resuelto, marque la respuesta si quiere. – KdgDev

1

Get-los niños no se reconoce en Powershell V3 tampoco.Sería genial si alguien eliminara ese mal ejemplo.

Como advertencia para cualquiera que busque archivos: C: \ en los discos duros de hoy tardará mucho tiempo en ejecutarse. Le recomendamos que limite su búsqueda tanto como pueda. Dado que la estructura de su carpeta puede incluir espacios o caracteres especiales, utilice los presupuestos de máquina de escribir (") o apóstrofo (') delimeters.

$ mylistoffiles = Get-ChildItem -Path' C: \ Windows \ Setup \ Scripts '-Recurse * .cmd | Select-Object-Propiedades FullName

$ mylistoffiles

Cuestiones relacionadas