Powershell - WIE gegen ein array
Für jede Datei verarbeitet wird, wird der Dateiname geprüft, um die Bedingung zu erfüllen. Beispielsweise erhalten die folgende Liste von filtern:
$excludeFiles = @"
aaa.bbb
ccccc.*
ddddd???.exe
"@ | SplitAndTrim;
Sollte es eine Datei ausschließen, die aus der Verarbeitung, wenn es passt jede der Linien. Versuchen zu vermeiden match/regex
, weil dieses Skript muss geändert werden von jemanden, der nicht weiß, und es gibt mehrere Orte, wo es braucht, um umgesetzt.
$excludedFiles
und ähnliche sind definiert als eine here-Zeichenfolge, die auf Zweck. Es ermöglicht die end-Benutzer/operator einfügen eine Reihe von Datei-Namen, die direkt aus der CMD/Powershell-Fenster.
Scheint es, dass die Powershell nicht akzeptieren -like
gegen ein array, so kann ich nicht schreiben, wie diese:
"ddddd000.exe" -like @("aaa.bbb", "ccccc.*", "ddddd???.exe")
Habe vermisse ich eine option? Wenn es nicht nativ unterstützt von Powershell, was ist der einfachste Weg, um es zu implementieren?
- Siehe die Antwort von Josh Einstein: stackoverflow.com/questions/848859/...
- Danke, @dugas, aber ich sehe nicht ein, warum diejenigen, die Komplikationen - vergleichen Sie die folgenden zwei Zeilen - siehe meine Antwort akzeptiert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie einen pattern-match gegen eine Sammlung von Namen, die aber nicht mit einer Liste von mustern. Versuchen Sie dies:
Hier ist, wie es gewickelt werden kann in einer Funktion:
Hier ist eine kurze version des Musters in der akzeptierten Antwort:
Angewendet, um den Fall in der OP erhält man
Ich nehme an, man könnte die
Get-ChildItem
-Exclude
parameter:Wenn Sie ein array von Dateien zu überprüfen,
Get-ChildItem
akzeptiert ein array von Pfaden:Get-ChildItem
oder einfachdir
(ich bin mehr verwendet, um Windows-Terminologie) korrekt schließt, die durch das gleiche Muster wie WIE, und es funktioniert für ein array von strings, das kann sehr praktisch für viele Anwendungen. Leider funktioniert es nicht für meine Bedürfnisse, da in einigen Fällen habe ich arbeiten müssen, um mit strings direkt, nicht mit file-Objekten. Noch Ihre Antwort verdient ein +1.