Immer wieder klasse wie flexibel man Alltagsaufgaben mit der Powershell lösen kann. Kürzlich mußte ich einige hundert Files unbenennen deren Namen auf -x86 endeten (mit verschiedenen Extensions). Eigentlich hätte das Installationsprogramm diesen String entfernen sollen, irgendwas war da aber schief gegangen. Lösung:
dir | % { rename $_.Name $_Name.replace("-x86", "") }

Erklärung: dir (oder get-childitems) legt alle dateien in die Pipeline, % ( oder For-Each) führt den Block für alle Elemente der Pipleine aus, $_ ist das aktuelle FileInfo oder DirInfo object. Der Name steht dann als ganz normaler String über die Eigenschaft Name zur Verfügung. Auf diesem Namen kann ich alle Methoden der .Net String Klasse verwenden, in diesem Fall replace. Ersetzen von “-x86” durch den leeren String führt genau zu dem gewünschten Namen. Ein rename (oder Rename-Item) eledigt dann die eigentliche Arbeit.

Advertisements