Ich habe einen sehr großen Ordner mit Dateien, von denen ich mit einem Skript von mir organisiere, das die Dateien genau so verfeinert, wie ich es brauche. Diese Elemente werden ähnlich wie in den folgenden Beispielen benannt:
Foo (Bar).txt
My File (This is) (My File).doc
Example (File) (Stuff) (Things).xml
Ich muss jedes Zeichen des Dateinamens ziehen nach dem (aber einschließlich) der ersten offenen Klammer "(" ohne die Dateierweiterung. Meine gewünschte Ausgabe für dieses Beispiel wäre:
(Bar)
(This is) (My File)
(File) (Stuff) (Things)
Ich habe erfolglos an der folgenden Zeile herumgespielt und bin mir nicht sicher, ob dies überhaupt die beste Lösung für dieses Problem wäre:
Get-ChildItem "*" | ForEach-Object { $_.SubString( $_.IndexOf('\(')+1 ) }
quelle
Get-ChildItem * | ForEach-Object { $start = $_.BaseName.IndexOf(''); if($start -ge 0){$_.BaseName.SubString( $_.BaseName.IndexOf('(') )} else{$ErrorAction} } | Select -uniq