2009-11-04 00:22:52 +0000 2009-11-04 00:22:52 +0000
65
65
Advertisement

¿Existe una forma de renombrar por lotes los archivos a minúsculas?

Advertisement

Necesito una forma de renombrar todos los archivos de las carpetas y subcarpetas a minúsculas.

Me gustaría saber si hay una forma de hacerlo usando sólo windows (XP o 7)

Advertisement

Respuestas (13)

128
128
128
2012-04-14 13:25:17 +0000

Vaya al directorio y ejecute el siguiente comando:

for /f "Tokens=*" %f in ('dir /l/b/a-d') do (rename "%f" "%f")

Aquí está el desglose por si alguien quiere modificar/mejorar :

  • for /f - Para cada línea
  • "Tokens=*" - Procesa cada elemento en cada línea.
  • %f in (...) - %f es el nombre de su variable para cada elemento.
  • dir - Lista cada archivo y subdirectorio de un directorio.
  • /l - (parámetro para dir) Utiliza minúsculas.
  • /b - (parámetro para dir) Utiliza el formato desnudo, sólo los nombres de archivos/directorios, sin tamaño, sin cabeceras.
  • /a-d - (parámetro para dir) No **enumera directorios. (a significa attribute, - significa not y d significa directory)_.
  • rename "%f" "%f"- renombrar el archivo con su propio nombre, que en realidad está rebajado por la combinación de comando dir y /l.
18
18
18
2009-11-04 00:26:39 +0000

spacetornado Renamer es un programa para Windows que renombra cantidades masivas de archivos por lotes. Puede buscar y reemplazar texto, eliminar un determinado número de caracteres, cambiar las mayúsculas, minúsculas o mayúsculas de la primera letra, y añadir texto al principio o al final (append/prepend) de cada nombre de archivo

12
Advertisement
12
12
2015-02-24 18:33:51 +0000

Desde Windows 7 puedes usar PowerShell para esas tareas

Get-ChildItem "C:\path\to\folder" -recurse | 
  Where {-Not $_.PSIsContainer} | 
  Rename-Item -NewName {$_.FullName.ToLower()}
  • Elige tu 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} |
9
9
9
2016-07-21 22:07:04 +0000

Aquí hay una solución de línea de comandos recursiva adecuada usando sólo comandos nativos de cmd.exe que realmente funciona. Creo que es la solución nativa más sencilla posible:

for /r %D in (.) do @for /f "eol=: delims=" %F in ('dir /l/b/a-d "%D"') do @ren "%D\%F" "%F"

Si está dispuesto a ir más allá de los comandos nativos de cmd.exe, entonces otra opción es mi JREN.BAT utilidad de renombrado de expresiones regulares que soporta opciones para convertir los nombres a mayúsculas o minúsculas. Es un script puro (híbrido JScript/lote) que se ejecuta de forma nativa en cualquier máquina Windows a partir de XP, sin necesidad de archivos exe de terceros. La documentación completa está incorporada - se accede desde la línea de comandos a través de jren /?, o jren /?? si desea una salida paginada.

Con JREN, la solución recursiva es tan simple como:

jren "^" "" /s /l
6
Advertisement
6
6
2009-12-05 20:17:27 +0000

Mi utilidad favorita para renombrar archivos por lotes es Cylog’s WildRename . Entre otras muchas características, puede cambiar las mayúsculas y minúsculas de los nombres de los archivos. Lo mejor de WildRename es probablemente que soporta expresiones regulares.

5
5
5
2016-05-06 15:53:33 +0000

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 (incluyéndolo):

C:\Foo>

  • C:\Foo \TO. txt

  • C:\Foo\Bar \LOWER. txt

  • C:\Foo\BarBaz \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 archivos (o nombres de archivos y directorios si se quita el interruptor /a-d) dentro de cada una de las rutas absolutas encontradas por el primer bucle, y convierte el nombre de estos archivos a minúsculas.

  • C:\Foo\Nde.txt**

  • C:\Foo\Bar\Nde.txt**

  • C:\Foo\Bar\Baz\Nde.txt**

  • C:\Foo\Nde.txt. txt**


\N necesita dos bucles porque el segundo argumento de rename debe ser un nombre de fichero y no una ruta absoluta (como la obtenida por el interruptor /s).

3
Advertisement
3
3
2013-04-07 17:06:17 +0000

Podrías utilizar una estrategia de “sustitución de caracteres”…

set Name=%Name:A=a%
set Name=%Name:B=b%
set Name=%Name:C=c%

…y así sucesivamente, para las letras A-Z. Probablemente podrías implementarlo en forma de bucle FOR.

1
1
1
2011-03-03 00:33:58 +0000

El mejor programa para hacer esto en Windows es Bulk Rename Utility . Es una herramienta para hombres. Incluso puedes usar regex para renombrar archivos y/o carpetas. También tiene integración con el shell (por lo que puede ejecutar desde el explorador con un clic derecho) que es muy agradable. Hay versiones de 64 y 32 bits disponibles.

1
Advertisement
1
1
2009-11-04 00:56:45 +0000

http://www.dostips.com/DtCodeCmdLib.php#Function.toLower da una función simple que debería ser capaz de incluir y llamar desde un archivo por lotes.

Así que haga que el archivo por lotes itere sobre las carpetas/nombres de archivos, y llame a esta función para generar la versión en minúsculas del nombre.

1
1
1
2009-12-05 19:54:00 +0000

Desde http://windowsitpro.com/articles/index.cfm?articleid=81612 :

Usando sólo comandos estándar, he creado los scripts LwrCase.bat y LwrCase_Folder.bat, para renombrar un nombre de archivo a minúsculas, o renombrar todos los nombres de archivo de una carpeta a minúsculas.

Para renombrar un nombre de archivo a minúsculas, utilice:

[call] LwrCase FullyQualifiedFileName

Donde FullyQualifiedFileName es el nombre de archivo completamente calificado a renombrar.

Para renombrar todos los nombres de archivos de un directorio, utilice:

[call] LwrCase_Folder FullyQualifiedDirectoryName [/S]

Donde FullyQualifiedDirectoryName es la ruta de la carpeta completamente calificada, y /S es un parámetro opcional que también renombrará los nombres de archivos en todas las subcarpetas.

NOTA: LwrCase.bat utiliza el parámetro /L del comando DIR, que devuelve los nombres en minúsculas.

LwrCase.bat contiene:

@echo off
if {%1}=={} @echo Syntax: LwrCase FullyQualifiedFileName&goto :EOF
if not exist %1 @echo LwrCase - %1 NOT found.&goto :EOF
setlocal
for /f "Tokens=*" %%a in ('@echo %~a1') do (
 set file=%%a
)
if /i "%file:~0,1%" EQU "d" @echo LwrCase - %1 is NOT a file.&endlocal&goto :EOF
for /f "Tokens=*" %%f in ('dir %1 /L /b /a /a-d') do (
 Rename %1 "%%f"
)
endlocal

LwrCase_Folder.bat contiene:

@echo off
if {%1}=={} @echo Syntax: LwrCase_Folder FullyQualifiedDirectoryName&goto :EOF
if not exist %1 @echo LwrCase_Folder - %1 NOT found.&goto :EOF
setlocal
for /f "Tokens=*" %%a in ('@echo %~a1') do (
 set folder=%%a
)
if /i "%folder:~0,1%" NEQ "d" @echo LwrCase_Folder - %1 is NOT a folder.&endlocal&goto :EOF
pushd %1
set sw=/B /A /A-D
if /i {%2}=={/S} set sw=%sw% %2
for /f "Tokens=*" %%f in ('dir %sw%') do (
 call LwrCase "%%f"
)
popd
endlocal
1
Advertisement
1
1
2017-05-30 15:01:22 +0000

La respuesta aceptada ](https://superuser.com/q/65302/150988#412413) a esta pregunta, por loftysnake , funciona para el directorio actual pero no busca en las subcarpetas. &nbsp Sawny sugirió una simple modificación a la respuesta de loftysnake para hacerla recursiva, pero no funciona, porque, mientras que el comando rename permite especificar una unidad y una ruta con nombre de archivo1 (el origen), nombre de archivo2 (el destino) debe ser sólo un nombre de archivo.  Para citar el mensaje de ayuda (/?),

… no puede especificar una nueva unidad o ruta para su archivo de destino.

Pero move funciona donde rename no lo hace, así que puede renombrar recursivamente los archivos a minúsculas con este comando:

for /f "Tokens=*" %f in ('dir /l/b/a-d/s') do (move /y "%f" "%f")

porque resulta que Move puede hacer frente a las rutas de los directorios.

El comando anterior funciona cuando se escribe directamente en el Símbolo del sistema (CMD.EXE).  Si quiere hacer esto desde un archivo por lotes (.BAT), debe duplicar los caracteres %:

for /f "Tokens=*" %%f in ('dir /l/b/a-d/s') do (move /y "%%f" "%%f")

Y probablemente pueda omitir los paréntesis y el /y y decir sólo do move ….

0
0
0
2014-11-06 00:08:21 +0000

Solución recursiva. Ponga esto en un archivo recursiverename.cmd..

for /f "Tokens=*" %%f in ('dir /l/b/a-d') do (rename "%%f" "%%f")
for /r /d %%x in (*) do (
    pushd "%%x"
    for /f "Tokens=*" %%f in ('dir /l/b/a-d') do (rename "%%f" "%%f")
    popd
)
0
Advertisement
0
0
2016-03-30 10:50:39 +0000

Powershell

Navega hasta el dir y ejecuta:

dir | Rename-Item -NewName { $_.Name.ToLowerInvariant() }

He comprobado que esto funciona. Se encuentra aquí: http://www.hanselman.com/blog/PennyPinchingVideoMovingMyWebsitesImagesToTheAzureCDNAndUsingACustomDomain.aspx

Advertisement
Advertisement