Wie kann ich get-childitem dazu bringen, nach mehreren Dateitypen zu filtern?


22

Ich versuche, eine Liste aller XSL- und XSLT-Dateien in einem Verzeichnis zu erhalten.

dir -recurse -filter *.xsl,*.xslt -name

Aber der folgende Fehler:

Get-ChildItem: 'System.Object []' kann nicht in den Typ 'System.String' konvertiert werden, der für den Parameter 'Filter' erforderlich ist. Die angegebene Methode wird nicht unterstützt.

dir -recurse -filter *.xsl -filter *.xslt -name

Habe aber diesen Fehler:

Get-ChildItem: Parameter kann nicht gebunden werden, da der Parameter 'Filter' mehrmals angegeben wird. Verwenden Sie die Array-Syntax, um Parametern, die mehrere Werte akzeptieren können, mehrere Werte zuzuweisen. Zum Beispiel "-Parameter Wert1, Wert2, Wert3".

Kann ich beide Dateierweiterungen mit einem einzigen Befehl auflisten?


Antworten:


33
dir .\* -include ('*.xsl', '*.xslt') -recurse

Beachten Sie, dass das () eigentlich redundant ist, aber ich bevorzuge es, explizit zu sein.
EBGreen

Es macht absolut keinen Sinn, warum dieser Befehl ohne die Option -recurse nicht funktioniert, um XL- und XLT-Dateien im aktuellen Verzeichnis aufzulisten.
Gordon Bell

5

Ich weiß nicht warum, aber dieser scheint viel schneller zu sein:

dir .\ -recurse | where {$_.extension -in ".xsl",".xslt"}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.