2013-07-15 6 views
10

Ich habe zahlreiche Dateien in einer sehr komplexen Verzeichnisstruktur, und aus Gründen, die keine Diskussion wert sind, muss ich alle Dateien mit der Erweiterung ".inp" umbenennen, um ".TXT" zu haben. Erweiterungen. Es gibt zahlreiche andere Dateien mit anderen Erweiterungen, die ich nicht berühren möchte, und ich möchte es rekursiv in mindestens 5 Ebenen tun.Massenumbenennung von Dateierweiterungen rekursiv (Windows Batch)

Bisher habe ich:

for /d %%x in (*) do pushd %%x & Ren *.inp *.TXT & popd 

... aber das geht nur eine Ebene tiefer von Verzeichnissen.

Kann jemand helfen? Danke im Voraus!

Antwort

16
for /r startdir %%i in (*.inp) do ECHO ren "%%i" "%%~ni.txt" 

sollte für Sie arbeiten. Ersetzen Sie startdir durch Ihren Anfangsverzeichnisnamen, und wenn Sie dies überprüft haben, entfernen Sie die echo vor der ren, um die Umbenennung tatsächlich durchzuführen.


Für die downvoters: eine Stapeldatei ausführt unterscheidet sich von von der Befehls Executing in Eingabeaufforderung, die jeweils %%x wo x ist die Metavariable (loop-Regelgröße) auf % reduziert werden muss, so

for /r startdir %i in (*.inp) do ECHO ren "%i" "%~ni.txt" 

sollte funktionieren, wenn Sie dies von der Eingabeaufforderung aus ausführen. Bitte lesen Sie den Hinweis zu echo.

+0

Awesome! Das ist wie eine schwarze Magie einfach und effektiv :) – myforums

+0

@Magoo ... ich denke, ich liebe dich. Danke für diese Lösung für ein Problem, das 2 Tage meines Lebens dauerte, ausgezeichnete Arbeit, danke! – Neville

20

Unter Windows 7 werden die folgenden einzeiligen für mich Befehl funktioniert, werden alle Dateien umbenennen, in * Js rekursiv, zu * .txt:

FOR /R %x IN (*.js) DO ren "%x" *.txt 
+3

Dies funktionierte, die ausgewählte Antwort nicht, sagte "%% ich wurde nicht erwartet". Danke dafür ! –

+0

Hat den gleichen Fehler "%% ich wurde nicht erwartet" aus dem Code in der angenommenen Antwort. Beachten Sie, dass Sie in das Startverzeichnis – brunettdan

+0

@SteveChamaillard wechseln müssen: Das liegt daran, dass die ausgewählte Antwort davon ausgeht, dass die Zeile in einer Batch-Datei enthalten ist. Wenn es von der Eingabeaufforderung aus ausgeführt wird, müssen Sie jedes '%%' in '%' ändern – Magoo