Wie führt man einen Windows Batch Befehl rekursiv aus?

8

Sie haben beispielsweise einen Umbenennungsbefehl in einer Stapeldatei und möchten diese Datei im aktuellen Verzeichnis und in allen Unterverzeichnissen ausführen.

    
Bassel Alkhateeb 11.01.2010, 18:21
quelle

1 Antwort

16

Angenommen, Ihre Charge ist etwa so benannt wie myrename.cmd , dann können Sie einfach Folgendes tun:

%Vor%

In der ersten Zeile wird es für das aktuelle Verzeichnis ausgeführt, die for Schleife wird rekursiv ( /r ) über alle Verzeichnisse ( /d ) iterieren und den Teil in den Klammern ausführen. Was wir in ihnen tun, ist, das Verzeichnis in dasjenige zu ändern, mit dem wir gerade übergehen, mit pushd - welches die nette Eigenschaft hat, diese Verzeichnisänderung mit popd rückgängig zu machen - und dann den Befehl auszuführen, was dann sein wird Führen Sie das Verzeichnis aus, in das wir gerade gewechselt haben.

Dies setzt voraus, dass der Stapel irgendwo im Pfad liegt. Wenn dies nicht der Fall ist und einfach dort liegt, wo die Batchdatei oben liegt, können Sie

verwenden %Vor%     
Joey 11.01.2010, 18:33
quelle