Necesito una forma de cambiar el nombre de todos los archivos en carpetas y subcarpetas a minúsculas.
Me gustaría saber si hay una manera de hacerlo usando solo Windows (XP o 7)
Necesito una forma de cambiar el nombre de todos los archivos en carpetas y subcarpetas a minúsculas.
Me gustaría saber si hay una manera de hacerlo usando solo Windows (XP o 7)
Respuestas:
Vaya al directorio y ejecute el siguiente comando:
Aquí está el desglose en caso de que alguien quiera modificar / mejorar:
for /f
- Por cada línea"Tokens=*"
- Procesar cada elemento en cada línea.%f in (...)
-%f
es su nombre de variable para cada artículo.dir
- enumera cada archivo y subdirectorio en un directorio./l
- (parámetro para dir) Utiliza minúsculas./b
- (parámetro para dir) Utiliza formato simple, solo los nombres de archivo / directorio, sin tamaño, sin encabezados./a-d
- (parámetro para dir) No , no la lista de directorios . (a
significaattribute
,-
representanot
yd
representadirectory
) .rename "%f" "%f"
- cambie el nombre del archivo con su propio nombre, que en realidad está en minúscula por eldir
comando y la/l
combinación.fuente
for /f "Tokens=*" %f in ('dir /l/b/a-d/s') do (rename "%f" "%f")
(agregada / r al directorio).spacetornado Renamer es un programa de Windows que renombra cantidades masivas de archivos en lotes. Puede buscar y reemplazar texto, eliminar un cierto número de caracteres, cambiar el caso a minúscula, mayúscula o primera letra mayúscula y agregar texto al principio o al final (agregar / anteponer) de cada nombre de archivo
fuente
Desde Windows 7 puede usar PowerShell para esas tareas
- Elija su carpeta raíz
- todos los archivos dentro de la carpeta raíz y las subcarpetas se renombran
- los nombres de las carpetas se excluyen con
Where {-Not $_.PSIsContainer} |
fuente
Aquí hay una solución de línea de comandos recursiva adecuada que usa solo comandos cmd.exe nativos que realmente funcionan. Creo que es la solución nativa más simple posible:
Si está dispuesto a ir más allá de los comandos nativos de cmd.exe, entonces otra opción es mi utilidad de cambio de nombre de expresiones regulares JREN.BAT que admite opciones para convertir nombres en mayúsculas o minúsculas. Es un script puro (JScript / lote híbrido) que se ejecuta de forma nativa en cualquier máquina Windows desde XP en adelante, no se necesitan archivos exe de terceros. La documentación completa está integrada: se accede desde la línea de comandos a través de
jren /?
, ojren /??
si desea una salida paginada.Con JREN, la solución recursiva es tan simple como:
fuente
/a-d
interruptor y también minúsculas los nombres de las carpetas también." D"') was unexpected at this time.
ejecutarlo como un comando directo funciona bien, simplemente no funciona cuando se ejecuta como un archivo por lotes. No estoy seguro de cómo hacer que funcione como un archivo por lotes, pero pensé que me daría cuenta del problema.%D
lo tanto, debe cambiar a%%D
, y%F
a%%F
si coloca el comando dentro de un script por lotes.Mi utilidad favorita personal para renombrar archivos por lotes es WildRename de Cylog . Entre muchas otras características, puede cambiar el caso de los nombres de archivo. ¡Lo mejor de WildRename es probablemente que admite expresiones regulares!
fuente
Versión "recursiva" de la respuesta aceptada (que funciona *)
for /f "Tokens=*" %f in ('cmd /c "echo %cd%& dir /l/b/ad/s"') do (for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g"))
El primer bucle
for /f "Tokens=*" %f in ('cmd /c "echo %cd%& dir /l/b/ad/s"')
Obtiene una lista de las rutas absolutas de todos los directorios dentro del actual (incluido):
C: \ Foo>
C: \ Foo \ TO.txt
C: \ Foo \ Bar \ LOWER.txt
C: \ Foo \ Bar \ Baz \ CASE.txt
El segundo bucle
for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g")
Obtiene una lista de todos los nombres de archivo (o nombres de archivo y directorio si retira el
/a-d
interruptor) dentro de cada una de las rutas absolutas encontradas por el primer bucle , y convierte el nombre de estos archivos en minúsculas.C: \ Foo \ TO.txt
C: \ Foo \ Bar \ LOWER.txt
C: \ Foo \ Bar \ Baz \ CASE.txt
* necesita dos bucles porque el segundo argumento
rename
debe ser un nombre de archivo y no una ruta absoluta (como la obtenida por el/s
conmutador).fuente
cmd /c "echo %cd%&
en el primerofor
? Es completamente innecesario.echo %cd%
está ahí para agregar la carpeta actual a la lista de rutas absolutas ; ycmd /c
hace el&
trabajo para combinar comandos. Soy un novato total con respecto a Windows Batch Scripting ; Si conoce una mejor manera, ¡no dude en mejorar la respuesta!Podrías usar una estrategia de "reemplazo de personaje" ...
... y así sucesivamente, para las letras AZ. Probablemente podría implementarlo en forma de bucle FOR.
fuente
http://www.dostips.com/DtCodeCmdLib.php#Function.toLower ofrece una función simple que debería poder incluir y llamar desde un archivo por lotes.
Por lo tanto, haga que el archivo por lotes repita las carpetas / nombres de archivo y llame a esta función para generar la versión en minúsculas del nombre.
fuente
Desde http://windowsitpro.com/articles/index.cfm?articleid=81612 :
Usando solo comandos estándar, he escrito LwrCase.bat y LwrCase_Folder.bat, para renombrar un nombre de archivo en minúsculas, o renombrar todos los nombres de archivo en una carpeta en minúsculas.
Para cambiar el nombre de un archivo a minúsculas, use:
Donde FullyQualifiedFileName es el nombre de archivo completo que se va a renombrar.
Para cambiar el nombre de todos los nombres de archivos en un directorio, use:
donde FullyQualifiedDirectoryName es la ruta completa de la carpeta y / S es un parámetro opcional que también cambiará el nombre de los archivos en todas las subcarpetas.
NOTA: LwrCase.bat utiliza el modificador / L del comando DIR, que devuelve nombres en minúsculas.
LwrCase.bat contiene:
LwrCase_Folder.bat contiene:
fuente
El mejor programa para hacer esto en Windows es Bulk Rename Utility . Es una herramienta de hombre. Incluso puede usar expresiones regulares para cambiar el nombre de archivos y / o carpetas. También tiene integración de shell (por lo que puede ejecutar desde el explorador con un clic derecho) que es muy agradable. Versiones de 64 bits y 32 bits disponibles.
fuente
La respuesta aceptada a esta pregunta, por loftysnake , funciona para el directorio actual pero no busca subcarpetas. Sawny sugirió una modificación simple a la respuesta de loftysnake para que sea recursiva, pero no funciona, porque, si bien el
rename
comando le permite especificar una unidad y ruta con el nombre de archivo1 (el origen), el nombre de archivo2 (el destino) debe ser solo un nombre de archivo . Para citar el/?
mensaje de ayuda ( ),Pero
move
funciona donderename
no funciona, por lo que puede cambiar el nombre de los archivos de forma recursiva a minúsculas con este comando:porque resulta que
Move
puede hacer frente a las rutas de directorio.El comando anterior funciona cuando se escribe directamente en el símbolo del sistema (
CMD.EXE
). Si desea hacer esto desde un.BAT
archivo por lotes ( ), debe duplicar los%
caracteres:Y probablemente puedas dejar los paréntesis y el
/y
y decir simplementedo move …
.fuente
move
funcionó donderename
no funciona, y creo que soy el único que ha sugerido el uso delmove
comando aquí. Simplemente tomé las sugerencias de @loftysnake y @sawny, y espero haberlas mejorado un poquito.move
, pero no puedo encontrarlo ahora.Solución recursiva. Ponga esto en un archivo recursiverename.cmd.
fuente
Potencia Shell
Navega hasta el directorio y ejecuta:
He verificado que esto funciona. Encontrado aquí: http://www.hanselman.com/blog/PennyPinchingVideoMovingMyWebsitesImagesToTheAzureCDNAndUsingACustomDomain.aspx
fuente