2017-01-25 6 views
1

Also ich bin nicht sicher, ob dies erreicht werden kann, all die Antworten, die ich viel gesehen habe mit den genauen Dateinamen zu wissen ... aber hier geht es:Suche mithilfe von Powershell

ich durch suchen möchten ein Verzeichnis, das + -2.000 Songs enthält, aber ich möchte nicht den ganzen Dateinamen wissen müssen (weil einige von ihnen lang und kompliziert werden können). Hier ist ein Beispiel dafür, was ich will: Ich weiß, ich kann den gesamten Inhalt des Verzeichnisses tun dies anzuzeigen:

Get-ChildItem C:\My\Path\To\Songs\Here 

Aber was ich tun möchte (da dieses Verzeichnis über 2.000 Songs enthält) ist die Suche so dass ich nur ein paar Wörter aus dem Titel eingeben muss und nur die Lieder erscheinen, die diese Wörter enthalten. Zum Beispiel:

Wenn der vollständige Name der Datei ist „Jeder stirbt Young“ und ich suche nach dem Stichwort „Everybody“ Ich mag die folgende Pop-up:

Jeder Jeder liebt Jede I Can‘ t Get mit Jedem etc etc etc

Ist dies möglich, Schlüsselwörter in einem Verzeichnis suchen und alle Dateinamen mit diesen Keywords zurückkehren? Ich betreibe Windows 7, wenn das jemand hilft überhaupt ...

+0

Versuchen 'Get-ChildItem -Path C: \ My \ Path \ Songs Here To \ \ -Recurse -Filter * Jeder *' – Nkosi

+0

@ Nkosi Das funktioniert! Ich wünschte ich könnte dir die Antwort geben! –

+1

'Get-Help' ist dein Freund in Powershell. Verwenden Sie 'Get-Help Get-ChildItem', um weitere Dokumentation zu diesem Cmdlet zu erhalten. Verwenden Sie das gleiche für jeden Befehl und Sie werden über die Fülle von Informationen erstaunt sein. – Nkosi

Antwort

2

Verwenden Sie den -Filter Parameter

Get-ChildItem -Path C:\My\Path\To\Songs\Here -Recurse -File -Filter *Everybody* 

Referenz: Get-ChildItem

-Filter

einen Filter in der Spezifiziert Format oder Sprache des Anbieters. Der Wert Dieser Parameter qualifiziert den Path-Parameter. Die Syntax des Filters, einschließlich der Verwendung von Platzhaltern, hängt vom Anbieter ab. Filter sind effizienter als andere Parameter, da der Anbieter sie beim Abrufen der Objekte anwendet, anstatt Windows PowerShell die Objekte filtern, nachdem sie vom -Provider abgerufen werden.

Update:

Um nur die Dateipfade erhalten Sie es wie

Get-ChildItem -Recurse -File -Filter *Everybody* | % {$_.FullName} 

verlängern oder

Get-ChildItem -Recurse -File -Filter *Everybody* | Foreach-Object {$_.FullName} 

durch die Dateien in eine Rohrleitung für jede Schleife und Extrahieren der vollständigen Pfad.

1

, wenn Sie einen Filter mehr wollen elabored Sie es tun können:

Get-ChildItem -Recurse -File | where {$_.Name -like "*word1*" -and $_.Name -notlike "*word2*"} | select FullName 
Verwandte Themen