¿Cómo puedo usar la línea de comandos de Windows para cambiar las extensiones de miles de archivos *****.jpg
?
¿Cómo puedo usar la línea de comandos de Windows para cambiar las extensiones de miles de archivos *****.jpg
?
Respuestas:
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 FOR
comando. Se puede usar con la /R
opción de aplicar recursivamente un comando a los archivos coincidentes. Por ejemplo:
for /R %x in (*.txt) do ren "%x" *.renamed
cambiará todas las .txt
extensiones a .renamed
recursivamente, comenzando en el directorio actual.
%x
es 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
ren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txt
?
FOR
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
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.
man ren
? La pregunta era sobre Windows / cmd
. ¿Los que ahora proporcionan man
páginas? ¿Qué es ren-1.0
y cómo podemos ver su man
página en contexto?
así de simple
ren *.* *.jpg
intente esto en el símbolo del sistema
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.
Renombrar múltiples extensiones de archivo:
Quieres cambiar ringtone1.mp3
, ringtone2.mp3
a 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.
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 .StoredProcedure
del 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.
set
comandos con esta sola: set "B=%%~nxf"
. ( %%~nxf
es n ame y e x tensión de %%f
). %cd%
puede ser inválido, cuando lo haces recursivo.
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/