Alterando as extensões de todos os arquivos em uma pasta com um comando no Windows

145

Como posso usar a linha de comando do Windows para alterar as extensões de milhares de arquivos *****.jpg?

Berker Yüceer
fonte
o que você quer dizer com alterar todas as extensões como *****. jpg? significa todas as extensões de arquivos para jpg? se sim, use ren . * .jpg
Imran Rizvi 27/03
qual sistema operacional? Como você quer mudá-los?
Bryce
@bryce off janelas do sistema operacional do curso ..
Berker Yüceer

Respostas:

298

Você pode usar ren(como renomear ):

ren *.XXX *.YYY

E, é claro, troque XXX e AAAA pelas extensões apropriadas. Ela vai mudar a partir de XXX para YYY. Se você deseja alterar todas as extensões, basta usar o curinga novamente:

ren *.* *.YYY

Uma maneira de fazer isso funcionar recursivamente é com o FORcomando Pode ser usado com a /Ropção de aplicar recursivamente um comando aos arquivos correspondentes. Por exemplo:

for /R %x in (*.txt) do ren "%x" *.renamed

alterará todas as .txtextensões para .renamedrecursivamente, iniciando no diretório atual. %xé a variável que contém os nomes dos arquivos correspondentes.

E, como você possui milhares de arquivos, aguarde até o cursor começar a piscar novamente, indicando que ele está funcionando.

Nota: isso funciona apenas no cmd. Não funciona no Powershell ou no Bash

chaveiro
fonte
* .XXX vai mudar arquivos para que determinada extensão (meios ele vai renomear todos os arquivos com extensão XXX)
Habib
@ keyser5053 também posso obter um relatório sobre a ação realizada aqui .. usando ren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txt?
Berker Yüceer 27/03
E a substituição recursiva em todos os subdiretórios?
NightElfik 10/09
@NightElfik Eu adicionado um exemplo recursivo que usosFOR
Keyser
4
Não consegui fazer isso funcionar no PowerShell, mas funcionou bem no cmd.exe. Só para que os outros estejam cientes.
hazzey
20

no CMD

tipo

ren *.* *.jpg

. seleciona todos os arquivos e renomeia para * (qualquer que seja o nome que eles tiverem) mais a extensão para jpg

Habib
fonte
10

Mudar o nome do comportamento às vezes é "menos que intuitivo"; por exemplo...

ren * .THM * .jpg renomeia seus arquivos THM para ter uma extensão de .jpg. por exemplo: GEDC003.THM será GEDC003.jpg

ren * .THM * b.jpg renomeia seus arquivos THM para * .THMb.jpg. por exemplo: GEDC004.THM se tornará GEDC004.THMb.jpg

ren * .THM * .b.jpg renomeará seus arquivos THM para * .b.jpg, por exemplo: GEDC005.THM se tornará GEDC005.b.jpg

PictureGuy
fonte
boa explicação
Arslan Ahmad
7

NOTA: não para Windows

Usando ren-1.0, o formato correto é:

"ren *.*" "#2.jpg"

De man ren

O padrão de substituição é outro nome de arquivo com índices de caracteres curinga incorporados, cada um dos quais consiste no caractere # seguido por um dígito de 1 a 9. No novo nome de um arquivo correspondente, os índices de caracteres curinga são substituídos pelos caracteres reais que correspondem ao referenciado curingas no nome do arquivo original.

e

Observe que o shell normalmente expande os curingas * e?, O que, no caso de ren, é indesejável. Assim, na maioria dos casos, é necessário colocar o padrão de pesquisa entre aspas.

gbonetti
fonte
Eu tive que usar # 1: ren "* .csv" "# 1.json"
elmalto
1
man ren? A pergunta era sobre o Windows / cmd. Agora eles fornecem manpáginas? O que é ren-1.0e como podemos visualizar sua manpágina no contexto?
underscore_d
5

isso é simples

ren *.* *.jpg

tente isso no prompt de comando

Imran Rizvi
fonte
3

Apenas para pessoas que desejam fazer isso em arquivos em lotes, esse código está funcionando:

FOR /R "C:\Users\jonathan\Desktop\test" %%f IN (*.jpg) DO REN "%%f" *.png

Neste exemplo, todos os arquivos com extensões .jpg no diretório C: \ Users \ jonathan \ Desktop \ test são alterados para * .png.

Jonathan
fonte
2

Renomeie várias extensões de arquivo:

Você quer mudar ringtone1.mp3, ringtone2.mp3para ringtone1.wav,ringtone2.wav

Aqui está como fazer isso: Estou em d drive no prompt de comando (CMD), então uso:

d:\>ren *.* *.wav 

Este é apenas um exemplo de extensão de arquivo, você pode usar qualquer tipo de extensão de arquivo, como WAV, MP3, JPG, GIF, bmp, PDF, DOC, DOCX, TXT, isso depende do seu sistema operacional.

E, como você possui milhares de arquivos, aguarde até o cursor começar a piscar novamente, indicando que ele está funcionando.

nanduvtlr
fonte
1

No meu caso, eu tinha um diretório com mais de 800 arquivos terminados em .StoredProcedure.sql(eles estavam em script com SSMS ).

As soluções postadas acima não funcionaram. Mas eu vim com isso:

(Com base nas respostas à programação em lote - obtenha o caminho relativo do arquivo )

@echo off
setlocal enabledelayedexpansion
for %%f in (*) do (
  set B=%%f
  set B=!B:%CD%\=!
  ren "!B!" "!B:.StoredProcedure=!"
)

O script acima remove a substring .StoredProceduredo nome do arquivo. Tenho certeza de que pode ser adaptado para cobrir mais casos, pedir informações e ser mais genérico.

Marc.2377
fonte
2
substituir seus dois setcomandos com este único: set "B=%%~nxf". ( %%~nxfé n ame e x tensão de %%f). %cd%pode ser inválido quando você o recursiva.
Stephan
1

Eu sei que isso é tão antigo, mas eu cheguei nele, e as respostas fornecidas não funcionaram para mim no PowerShell, então, depois de pesquisar, encontrei esta solução

fazê-lo no PowerShell

Get-ChildItem -Path C:\Demo -Filter *.txt | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".old")}

o crédito vai para http://powershell-guru.com/powershell-tip-108-bulk-rename-extensions-of-files/

Mohamed
fonte
0

Uma maneira alternativa de renomear arquivos usando o pacote renamer npm.

Abaixo está um exemplo de renomeação de extensões de arquivos

renamer -d --path-element ext --find ts --replace js *
Sagar
fonte
0

O que funcionou para mim é este (primeiro o CD na pasta):

Get-ChildItem -Filter *.old | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".new")}
Roger
fonte