Jak zmienić nazwę wielu plików w wielu folderach za pomocą jednego polecenia

11

Chcemy zmienić nazwy naszych *.htmlplików, *.phpale (niestety) nie mamy wystarczającej wiedzy, aby to zrobić za pomocą polecenia wiersza polecenia cmd i / lub pliku wsadowego.

Problem polega na tym, że każdy plik znajduje się w osobnym folderze - i mówię o ponad 750 różnych nazwach folderów. Używanie symboli wieloznacznych do plików, które znam, * ale używanie symboli wieloznacznych do folderów jest mi nieznane. Prawdopodobnie musimy użyć FORpolecenia (w wierszu polecenia), ale utknąłem.

Stosowana przez nas struktura folderów to:

rodzic-Folder / dziecko-Folder / wnuczek-folderu / pliku .html

na przykład:

  • games/A/game_name/file.html
  • games/B/game_name/file.html
  • games/C/game_name/file.html i tak dalej.

Folder nadrzędny jest taki sam dla wszystkich plików; foldery podrzędne i wnukowe są różne dla większości plików.

Po zmianie nazwy tych plików na *.phpzakładam, że następujące .htaccessspowoduje stałe przekierowanie.

RedirectMatch 301 (.*)\.html$ http://oursite.com$1.php
Charles
źródło

Odpowiedzi:

14

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

Działa to w PowerShell. Jeśli masz system Windows 7 lub Vista, powinieneś go zainstalować domyślnie. Jeśli masz XP, możesz go pobrać tutaj .

soandos
źródło
Soandos, Chapeau !!!!!!!!!!!! Wiele dzięki z tej strony działa jak urok.
Charles
@Charles, jeśli to rozwiązało problem, kliknij znacznik wyboru, aby wszyscy inni, którzy go zobaczą, wiedzieli, że zadziałało. Witamy w SuperUser.
soandos
3

W wierszu poleceń:

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

Uwaga: możesz zastąpić *.htmlinne symbole wieloznaczne, np d:\www\*.html.

Uwaga 2: W przypadku korzystania z polecenia w pliku wsadowym, należy wymienić %az %%a(nie pytaj mnie dlaczego)

ZEDA-NL
źródło
Dlaczego tak mówisz "delims=*"?  "delims="powinno być wystarczająco dobre (tj. dlaczego określasz ogranicznik *?
G-Man mówi „Przywróć Monikę”
1

Flexible Renamer to doskonały mały program, który będzie obsługiwał kilka różnych typów wyszukiwania / zamiany nazw. Akceptuje wyrażenia regularne i ma predefiniowane wspólne wzorce. Ponadto umożliwia dołączanie elementów do podfolderów lub operowanie na samych folderach. Daje także podgląd wszystkich zmian, które zostaną wprowadzone. Korzystam z niego od lat i bardzo go polecam.

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

Aaron
źródło
1

Korzystając z forfiles, możemy napisać skrypt, aby rekursywnie zmieniać nazwy plików we wszystkich podfolderach.

forfiles /S /M *.html /C "cmd /c rename @file @fname.php"   

Źródło: Skrypt wsadowy do zmiany nazw plików zbiorczo

Srini
źródło
0

TotalCommander: Szukaj - Wyślij do panelu - Narzędzie do wielokrotnej zmiany nazwy

Leniwy Borsuk
źródło