Cara mengganti nama banyak file di banyak folder dengan satu perintah

11

Kami ingin mengganti nama *.htmlfile kami *.phptetapi (sayangnya) tidak memiliki cukup pengetahuan untuk melakukannya dengan perintah cmd prompt dan / atau file batch.

Masalahnya adalah bahwa setiap file berada di folder terpisah - dan saya berbicara tentang lebih dari 750 nama folder yang berbeda. Menggunakan wildcard untuk file yang saya tahu adalah * tetapi menggunakan wildcard untuk folder tidak diketahui oleh saya. Kita mungkin perlu menggunakan FORperintah (di Command Prompt), tetapi di sana saya mandek.

Struktur folder yang kami gunakan adalah:

parent-folder / child-folder / grandchild-folder / file .html

sebagai contoh:

  • games/A/game_name/file.html
  • games/B/game_name/file.html
  • games/C/game_name/file.html dan seterusnya.

Folder induk sama untuk semua file; folder anak & cucu berbeda untuk sebagian besar file.

Setelah mengganti nama file-file ini *.phpsaya menganggap yang berikut di .htaccessakan membuat redirect permanen.

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

Jawaban:

14

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

Ini akan bekerja di PowerShell. Jika Anda memiliki Windows 7 atau Vista, Anda harus menginstalnya secara default. Jika Anda menggunakan XP, Anda dapat mengunduhnya di sini .

soando
sumber
Soando, Chapeau !!!!!!!!!!!! Banyak thanx dari sisi ini, bekerja seperti pesona.
Charles
@ Charles, jika ini menyelesaikan masalah Anda, silakan klik tanda centang, sehingga semua orang yang melihatnya akan tahu bahwa itu berhasil. Selamat datang di SuperUser.
soandos
3

Di baris perintah:

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

Catatan: Anda dapat mengganti *.htmluntuk wildcard lainnya, mis d:\www\*.html.

Catatan 2: Jika menggunakan perintah dalam file batch, ganti %adengan %%a(jangan tanya kenapa)

ZEDA-NL
sumber
Kenapa kamu bilang "delims=*"?  "delims="harus cukup baik (yaitu, mengapa Anda menentukan pembatas *?
G-Man Berkata 'Reinstate Monica'
1

Flexible Renamer adalah program kecil yang luar biasa yang akan menangani beberapa jenis pencarian / penggantian nama yang berbeda. Ia menerima ekspresi reguler, dan memiliki pola umum yang telah ditentukan sebelumnya. Selain itu, ini memungkinkan Anda untuk memasukkan item dalam subfolder, atau beroperasi pada folder itu sendiri. Ini juga memberi Anda pratinjau semua perubahan yang akan dilakukan. Saya telah menggunakannya selama bertahun-tahun, dan sangat merekomendasikannya.

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

Harun
sumber
1

Dengan menggunakan forfile, kita dapat menulis skrip, untuk mengganti nama file secara rekursif di semua subfolder.

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

Sumber: Skrip batch untuk mengganti nama file secara massal

Srini
sumber
0

TotalCommander: Pencarian - Kirim ke Panel - Alat Multi-Ubah Nama

Malas Badger
sumber