So benennen Sie mehrere Dateien in mehreren Ordnern mit einem Befehl um


11

Wir möchten unsere *.htmlDateien umbenennen , haben *.phpaber (leider) nicht genug Wissen, um dies mit einem cmd-Eingabeaufforderungsbefehl und / oder einer Batch-Datei zu tun.

Das Problem ist, dass sich jede Datei in einem separaten Ordner befindet - und ich spreche von mehr als 750 verschiedenen Ordnernamen. Die Verwendung von Platzhaltern für die mir bekannten Dateien ist das, * aber die Verwendung eines Platzhalters für Ordner ist mir unbekannt. Wir müssen wahrscheinlich den FORBefehl (in der Eingabeaufforderung) verwenden, aber da stecke ich fest.

Die von uns verwendete Ordnerstruktur lautet:

Elternordner / Kinderordner / Enkelordner / Datei .html

beispielsweise:

  • games/A/game_name/file.html
  • games/B/game_name/file.html
  • games/C/game_name/file.html und so weiter.

Der übergeordnete Ordner ist für alle Dateien gleich. Die Ordner für Kinder und Enkelkinder unterscheiden sich für die meisten Dateien.

Nach dem Umbenennen dieser Dateien in *.phpgehe ich davon aus, dass im Folgenden .htaccesseine permanente Weiterleitung erfolgt.

RedirectMatch 301 (.*)\.html$ http://oursite.com$1.php

Antworten:


14

get-childItem -recurse | Where {$_.extension -eq ".html"} | rename-item -newname { $_.name -replace ".html",".php" }

Dies funktioniert in PowerShell. Wenn Sie Windows 7 oder Vista haben, sollten Sie es standardmäßig installiert haben. Wenn Sie mit XP arbeiten, können Sie es hier herunterladen .


Soandos, Chapeau !!!!!!!!!!!! Vielen Dank von dieser Seite, wirkt wie ein Zauber.
Charles

@ Charles, wenn dies Ihr Problem gelöst hat, klicken Sie bitte auf das Häkchen, damit alle anderen, die es sehen, wissen, dass es funktioniert hat. Willkommen bei SuperUser.
Soandos

3

In der Kommandozeile:

for /f "delims=*" %a in ('dir *.html /b /s') do ren "%a" *.php

Hinweis: Sie können *.htmlandere Platzhalter ersetzen , z d:\www\*.html.

Hinweis 2: Wenn Sie den Befehl in einer Batchdatei verwenden, ersetzen Sie ihn %adurch %%a(fragen Sie mich nicht warum)


Warum sagen Sie "delims=*"?  "delims="sollte gut genug sein (dh warum geben Sie ein Trennzeichen an *?
G-Man sagt 'Reinstate Monica'

1

Flexible Renamer ist ein ausgezeichnetes kleines Programm, das verschiedene Arten der Umbenennung von Suchen / Ersetzen unterstützt. Es akzeptiert reguläre Ausdrücke und hat gemeinsame vordefinierte Muster. Darüber hinaus können Sie Elemente in Unterordner aufnehmen oder Ordner selbst bearbeiten. Außerdem erhalten Sie eine Vorschau aller vorgenommenen Änderungen. Ich habe es jahrelang benutzt und kann es nur empfehlen.

http://download.cnet.com/Flexible-Renamer/3000-2248_4-28799.html



Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.