Como renomear vários arquivos em várias pastas com um comando

11

Queremos renomear nossos *.htmlarquivos para, *.phpmas (infelizmente) não temos conhecimento suficiente para fazê-lo com um comando de prompt do cmd e / ou arquivo em lotes.

O problema é que cada arquivo está em uma pasta separada - e eu estou falando de mais de 750 nomes de pastas diferentes. O uso de curingas para os arquivos que eu sei é o, * mas o uso também de curinga para pastas é desconhecido para mim. Provavelmente precisamos usar o FORcomando (no prompt de comando), mas lá estou eu.

A estrutura de pastas que usamos é:

pai-pasta / -pasta filho / neto-pasta / arquivo .html

por exemplo:

  • games/A/game_name/file.html
  • games/B/game_name/file.html
  • games/C/game_name/file.html e assim por diante.

A pasta pai é a mesma para todos os arquivos; as pastas filho e neto são diferentes para a maioria dos arquivos.

Depois de renomear esses arquivos como *.phpeu assumo o seguinte no .htaccessfará um redirecionamento permanente.

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

Respostas:

14

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

Isso funcionará no PowerShell. Se você possui o Windows 7 ou Vista, deve instalá-lo por padrão. Se você estiver no XP, faça o download aqui .

soandos
fonte
Soandos, Chapeau !!!!!!!!!!!! Muitos agradecimentos deste lado, funcionam como um encanto.
Charles
@ Charles, se isso resolveu seu problema, clique na marca de seleção, para que todos os que a virem saibam que funcionou. Bem-vindo ao SuperUser.
soandos
3

Na linha de comando:

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

Nota: Você pode substituir *.htmlpor outro curinga, por exemplo d:\www\*.html.

Nota 2: Se estiver usando o comando em um arquivo em lotes, substitua %apor %%a(não me pergunte por que)

ZEDA-NL
fonte
Por que você diz "delims=*"?  "delims="deve ser bom o suficiente (por exemplo, por que você especifica um delimitador de *?
G-Man Diz 'Reinstate Monica'
1

O Renamer flexível é um excelente pequeno programa que manipula vários tipos diferentes de renomear pesquisas / substituições. Ele aceita expressões regulares e possui padrões comuns predefinidos. Além disso, permite incluir itens nas subpastas ou operar nas próprias pastas. Também fornece uma visualização de todas as alterações que serão feitas. Eu o uso há anos e recomendo.

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

Aaron
fonte
1

Usando forfiles, podemos escrever um script para renomear arquivos recursivamente em todas as subpastas.

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

Origem: script em lote para renomear arquivos em massa

Srini
fonte
0

TotalCommander: Pesquisa - Enviar para o painel - Ferramenta Multi-Rename

Lazy Badger
fonte