Wie kann ich rekursiv umbenennen Ordner mit der Powershell?

Rekursiven umbenennen von Dateien mit PS ist trivial (variation am Beispiel von Mike Ormond ' s blog):

dir *_t*.gif -recurse 
    | foreach { move-item -literal $_ $_.Name.Replace("_thumb[1]", "")}

Ich versuche rekursiv umbenennen einer Ordner-Struktur.

Den use-case ist, ich möchte in der Lage sein zu benennen, eine ganze VS.NET Lösung (z.B. von Foo.Bar zu Bar.Foo). Um dies zu tun, gibt es mehrere Schritte:

  1. Ordner umbenennen (z.B. \Foo.Bar\Foo.Bar.Model => \Bar.Foo\ - Bar.Foo.Modell)
  2. Umbenennen von Dateien (z.B. Foo.Bar.Modell.csproj => Bar.Foo.Modell.csproj)
  3. Suchen und Ersetzen in Dateien zu korrigieren namespace-änderungen (z.B. 'namespace Foo.Bar' =>', namespace Bar.Foo')

Ich bin momentan auf der Arbeit der erste Schritt in diesem Prozess.

Fand ich diese posting, das spricht über die Herausforderungen und Ansprüche eine Lösung, aber nicht darüber reden, was die Lösung ist.

Ich laufen in der Rekursion Wand. Wenn ich lassen PS befassen sich mit der Rekursion mit einem flag, der übergeordnete Ordner wird umbenannt, bevor die Kinder, und das script wirft einen Fehler. Wenn ich versuche zu implementieren ist die Rekursion mich, meinen Kopf zu bekommen, ist alles schmerzende und Dinge, die schief gehen - für das Leben von mir ich kann nicht Dinge, die Ihr benennt, das im Heck der Rekursion Baum.

InformationsquelleAutor rbellamy | 2011-06-02
Schreibe einen Kommentar