Cambiar las extensiones de todos los archivos en una carpeta con un comando en Windows

145

¿Cómo puedo usar la línea de comandos de Windows para cambiar las extensiones de miles de archivos *****.jpg?

Berker Yüceer
fuente
¿Qué quieres decir con cambiar todas las extensiones como *****. jpg? ¿significa todas las extensiones de archivos a jpg? en caso afirmativo, use ren . * .jpg
Imran Rizvi
que sistema operativo ¿Cómo quieres cambiarlos?
Bryce
@bryce fuera del curso del sistema operativo Windows ..
Berker Yüceer

Respuestas:

300

Puede usar ren(como en renombrar ):

ren *.XXX *.YYY

Y, por supuesto, cambie XXX e YYY por las extensiones apropiadas. Cambiará de XXX a YYY. Si desea cambiar todas las extensiones, simplemente use el comodín nuevamente:

ren *.* *.YYY

Una forma de hacer que esto funcione de forma recursiva es con el FORcomando. Se puede usar con la /Ropción de aplicar recursivamente un comando a los archivos coincidentes. Por ejemplo:

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

cambiará todas las .txtextensiones a .renamedrecursivamente, comenzando en el directorio actual. %xes la variable que contiene los nombres de archivo coincidentes.

Y, dado que tiene miles de archivos, asegúrese de esperar hasta que el cursor comience a parpadear nuevamente para indicar que ya ha funcionado.

Nota: esto solo funciona en cmd. No funcionará en Powershell o Bash

Keyser
fuente
* .XXX cambiará los archivos para esa extensión en particular (significa que cambiará el nombre de todos los archivos con la extensión XXX)
Habib
@ keyser5053 también puedo obtener un informe sobre la acción realizada aquí ... con el uso ren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txt?
Berker Yüceer
¿Y qué hay del reemplazo recursivo en todos los subdirectorios?
NightElfik
@NightElfik Agregué un ejemplo recursivo que usaFOR
keyser el
44
No pude hacer que esto funcione en powershell, pero funcionó bien en cmd.exe. Solo para que otros lo sepan.
Hazzey 01 de
20

en CMD

tipo

ren *.* *.jpg

. seleccionará todos los archivos y cambiará el nombre a * (cualquiera que sea el nombre que tengan) más la extensión a jpg

Habib
fuente
10

Cambiar el nombre del comportamiento es a veces "menos que intuitivo"; por ejemplo...

ren * .THM * .jpg cambiará el nombre de sus archivos THM para que tengan una extensión de .jpg. por ejemplo: GEDC003.THM será GEDC003.jpg

ren * .THM * b.jpg cambiará el nombre de sus archivos THM a * .THMb.jpg. por ejemplo: GEDC004.THM se convertirá en GEDC004.THMb.jpg

ren * .THM * .b.jpg cambiará el nombre de sus archivos THM a * .b.jpg por ejemplo: GEDC005.THM se convertirá en GEDC005.b.jpg

PictureGuy
fuente
buena explicación
Arslan Ahmad
7

NOTA: no para Windows

Usando ren-1.0 la forma correcta es:

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

De man ren

El patrón de reemplazo es otro nombre de archivo con índices comodín incrustados, cada uno de los cuales consiste en el carácter # seguido de un dígito del 1 al 9. En el nuevo nombre de un archivo coincidente, los índices comodín se reemplazan por los caracteres reales que coinciden con los referenciados. comodines en el nombre de archivo original.

y

Tenga en cuenta que el shell normalmente expande los comodines * y?, Que en el caso de ren no es deseable. Por lo tanto, en la mayoría de los casos es necesario encerrar el patrón de búsqueda entre comillas.

gbonetti
fuente
Tuve que usar # 1: ren "* .csv" "# 1.json"
elmalto
1
man ren? La pregunta era sobre Windows / cmd. ¿Los que ahora proporcionan manpáginas? ¿Qué es ren-1.0y cómo podemos ver su manpágina en contexto?
underscore_d
5

así de simple

ren *.* *.jpg

intente esto en el símbolo del sistema

Imran Rizvi
fuente
3

Solo para las personas que buscan hacer esto en archivos por lotes, este código está funcionando:

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

En este ejemplo, todos los archivos con extensiones .jpg en el directorio C: \ Users \ jonathan \ Desktop \ test se cambian a * .png.

Jonathan
fuente
2

Renombrar múltiples extensiones de archivo:

Quieres cambiar ringtone1.mp3, ringtone2.mp3a ringtone1.wav,ringtone2.wav

Aquí es cómo hacerlo: estoy en la unidad d en el símbolo del sistema (CMD), así que uso:

d:\>ren *.* *.wav 

Este es solo un ejemplo de extensiones de archivo, puede usar cualquier tipo de extensión de archivo como WAV, MP3, JPG, GIF, bmp, PDF, DOC, DOCX, TXT, esto depende de cuál sea su sistema operativo.

Y, dado que tiene miles de archivos, asegúrese de esperar hasta que el cursor comience a parpadear nuevamente para indicar que ya ha funcionado.

nanduvtlr
fuente
1

En mi caso, tenía un directorio con más de 800 archivos que terminaban .StoredProcedure.sql(estaban encriptados con SSMS ).

Las soluciones publicadas anteriormente no funcionaron. Pero se me ocurrió esto:

(Basado en las respuestas a la programación por lotes: obtenga la ruta relativa del archivo )

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

El script anterior elimina la subcadena .StoredProceduredel nombre del archivo. Estoy seguro de que se puede adaptar para cubrir más casos, solicitar aportes y, en general, ser más genérico.

Marc.2377
fuente
2
reemplazar sus dos setcomandos con esta sola: set "B=%%~nxf". ( %%~nxfes n ame y e x tensión de %%f). %cd%puede ser inválido, cuando lo haces recursivo.
Stephan
1

Sé que esto es muy antiguo, pero he llegado a él, y las respuestas proporcionadas no me funcionaron en PowerShell, así que después de buscar encontré esta solución

hacerlo en powershell

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

el crédito va a http://powershell-guru.com/powershell-tip-108-bulk-rename-extensions-of-files/

Mohamed
fuente
0

Una forma alternativa de cambiar el nombre de los archivos con el paquete renamer npm.

a continuación se muestra un ejemplo de cambio de nombre de extensiones de archivos

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

Lo que funcionó para mí es este (primero cd a la carpeta):

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