Como posso usar a linha de comando do Windows para alterar as extensões de milhares de arquivos *****.jpg
?
Como posso usar a linha de comando do Windows para alterar as extensões de milhares de arquivos *****.jpg
?
Respostas:
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 FOR
comando Pode ser usado com a /R
opção de aplicar recursivamente um comando aos arquivos correspondentes. Por exemplo:
for /R %x in (*.txt) do ren "%x" *.renamed
alterará todas as .txt
extensões para .renamed
recursivamente, 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
ren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txt
?
FOR
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
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.
man ren
? A pergunta era sobre o Windows / cmd
. Agora eles fornecem man
páginas? O que é ren-1.0
e como podemos visualizar sua man
página no contexto?
isso é simples
ren *.* *.jpg
tente isso no prompt de comando
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.
Renomeie várias extensões de arquivo:
Você quer mudar ringtone1.mp3
, ringtone2.mp3
para 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.
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 .StoredProcedure
do nome do arquivo. Tenho certeza de que pode ser adaptado para cobrir mais casos, pedir informações e ser mais genérico.
set
comandos com este único: set "B=%%~nxf"
. ( %%~nxf
é n ame e x tensão de %%f
). %cd%
pode ser inválido quando você o recursiva.
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/