2009-04-18 7 views
5

Sto provando a creare una funzione che indichi tutti i percorsi in cui si trova un determinato nome file. La funzione richiederebbe un parametro, che è il nome del file. Il risultato sarebbe un elenco di tutti i percorsi o un messaggio che indica che non è presente alcun file nel sistema.Ottieni PowerShell per visualizzare tutti i percorsi in cui è possibile trovare un determinato file su un'unità.

Sono nuovo di Powershell e non ho ancora ottenuto la sintassi. Ho provato questo:

Get-ChildItem -Path -Include notepad.exe 

Ma che buttato un messaggio di errore. Attualmente sto cercando:

$i="notepad.exe" 

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

introduttiva che ora, è ancora in esecuzione, non so cosa succederà, davvero.

EDIT: echo'd una quantità enorme di linee che basta dire "-Path" ...

Qualcuno può aiutare con questo problema? A proposito, sto usando Powershell 1.0.

Così, per spiegare quello che voglio vedere quando l'esecuzione di questo comando, qui è un esempio di quello che mi aspettavo dopo aver guardato per * .txt:

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

E così via, che elenca i percorsi a tutti. file txt sul mio hard disk. Solo i percorsi, uno per linea, senza ulteriori informazioni necessarie.

EDIT2:

L'ho fatto. Lascerò questa domanda per coloro che cercano di farlo in futuro.

La funzione che ho usato è stato questo (questo esempio specifico vi consegnerà una lista di tutti i file .zip sul vostro hard disk, modificare ove necessario):

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

Questo ha creato un file chiamato listOfPaths.txt sul mio C: \ cartella e questo conteneva un elenco di tutte le occorrenze di qualsiasi file che termina con .zip in tutte le sottocartelle del mio hard disk.

Il bit "c: \" non è menzionato, ma non mi dispiace.

Edit3:

grazie capar per una versione più completa.

Ecco il codice del capar (o come ho preso a lavorare, dal momento che Get-bambini non funziona in 1.0)

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

+1 per portare di nuovo a 0, non vedo nulla di meritevole di una downvote –

+0

grazie capar, ancora cercando di capire questo comando fuori.. – KdgDev

+1

Perché qualcuno ha violentato questo post e lo ha svalutato? 'Dir * .zip/s> foo.txt' farà lo stesso. – ojblass

risposta

9

Dal momento che è venerdì sera, ho deciso di giocare con Power Shell per vedere se posso aiutare :) Questo è abbastanza vicino a quello che stai chiedendo credo :

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

Se aiuta, questo comando elencherà le proprietà di qualsiasi oggetto che verrà restituito da Get-ChildItem:

Get-ChildItem | Get-Member 
+1

Powershell e rror: Get-Children non è un cmdlet riconosciuto, funzione ... Stai utilizzando Powershell 2.0 per caso? – KdgDev

+2

Utilizzato Get-ChildItem e ha funzionato come un fascino. Awsome, grazie per l'aiuto – KdgDev

+1

Benvenuto. Sono contento che ha funzionato. –

1

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

+0

risolto, controlla la risposta se lo desideri. – KdgDev

1

Get-bambini non è riconosciuto in PowerShell V3 sia.Sarebbe bello se qualcuno rimuovesse quel cattivo esempio.

Come avvertimento per chiunque cerchi i file: C: \ sugli attuali dischi rigidi impiegherà molto tempo per essere eseguito. Si consiglia di limitare la ricerca il più possibile. Poiché la struttura della cartella potrebbe includere spazi o caratteri speciali, utilizzare il delimitatore preventivo (") o apostrofo (')

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

$ mylistoffiles

Problemi correlati