Cómo cambiar el nombre de 80,000 archivos a la vez en Windows

8

Tengo 80,000 archivos en una carpeta y necesito cambiarles el nombre

filename.jpg

a

._filename.jpg

en el entorno de Windows, supongo que a partir de dos. La razón es que comprimí estos archivos en un tar.gz desde Unix y los copié en Windows y, por alguna razón, los nombres de los archivos han cambiado.

¿Podría decirme cuál es el comando para hacerlo? Gracias

aneuryzm
fuente

Respuestas:

3

Puede usar el comando incorporado renameoren :

ren *.jpg ._*.jpg

Sin embargo, como con todas estas cosas, pruébelo primero en un directorio que contenga solo algunos archivos.

ChrisF
fuente
1
Me gusta su enfoque, pero tengo 2 problemas: (1) se reemplazan las primeras letras de los nombres de archivo. En otros términos, el "._" no se agrega al principio pero reemplaza las primeras 2 letras. (2) "._" en realidad no funciona. Si uso, por ejemplo "__", entonces funciona. Creo que el punto "." da algunos problemas
aneuryzm
@Patrick - Debo admitir que no tuve la oportunidad de probar esto completamente, y sí, creo que tienes razón sobre el punto que causa problemas.
ChrisF
Esto es incorrecto y no se debe a los puntos. rensolo puede reemplazar texto con texto de la misma longitud. Por ejemplo, si tiene archivos file1.txty file2.txt, ren file*.txt blah*.txthace lo que espera (ahora tiene archivos blah1.txty blah2.txt). Sin embargo, si a continuación, escriba ren blah*.txt myfile*.txtlas bombas de comando a cabo, ya que cambia el nombre blah1.txtde myfile.txt(no myfile1.txt) y luego no puede cambiar el nombre blah2.txta myfile.txtcausa de que el archivo ya existe.
David Richerby
15

Aquí hay una manera de usar PowerShell:

Navega a tu carpeta y ejecuta este comando

Get-ChildItem *.jpg | Rename-Item -newname {"._" + $_.Name}

Versión corta de bonificación extra:

gci *.jpg | ren -newname {"._" + $_.Name}
Siim K
fuente
6

Tengo 2 soluciones:

  1. Todos los archivos están en la misma carpeta.

    • ejecute lo siguiente desde el símbolo del sistema en esa carpeta:

      for /f "delims=¯" %i in ('dir /b /on') do ren "%i" "._%i"
      
  2. solución completa cuando hay archivos en subcarpetas Y cuando desea reemplazar los "n" primeros caracteres con una cadena que desee: D

    • crear un archivo por lotes con el siguiente comando
    • cambia los parámetros variables a lo que quieras
      • path: poner dentro de ""la ruta raíz de sus archivos (por ejemplo, "C: \ documentos y configuraciones \ usuario \ escritorio \ nueva carpeta"
      • numfirstchars2replace: ponga un número con los primeros caracteres para reemplazar (en su caso, 2)
      • str2put: ponga una cadena para agregar como prefijo del nuevo nombre de archivo (en su caso, ._)
    • ejecutarlo en una carpeta diferente de donde están los archivos


@echo off

::only to tell user what this bat are doing
echo.1.initializing...

::enable that thing to allow, for example, incremental counter in a for loop :)
echo.- EnableDelayedExpansion
SETLOCAL EnableDelayedExpansion

::variables
echo.- variables
:: - place here the absolute root path of your files
set path="put here where are the root folder of your files"
set pathbak=%cd%
set numfirstchars2replace=2
set str2put=._

::go to %path% and its driveletter
echo.- entering the path you want
for /f "delims=¯" %%i in ('echo.%path%') do %%~di
cd %path%

::search all subfolders and save them to a temp file
echo.- searching for subfolders
echo.%path%>%temp%\tmpvar.txt
for /f "delims=¯" %%i in ('dir /s /b /on /ad') do echo."%%i">>%temp%\tmpvar.txt

::execute command for root folder and all found subfolders
echo.
echo.2.executing...
for /f "delims=¯" %%i in (%temp%\tmpvar.txt) do (
  cd %%i
  echo.- in folder: %%i
  for /f "delims=¯" %%j in ('dir /b /on /a-d') do (
    set newname=%%j
    set newname=!newname:~%numfirstchars2replace%,1000!
    echo.- renaming from "%%j" to "%str2put%!newname!"...
    ren "%%j" "%str2put%!newname!"
  )
)

echo.
echo.3.exiting...
::return to %pathbak% and its driveletter
for /f "delims=¯" %%i in ('echo.%pathbak%') do %%~di
cd %pathbak%

@echo on
kokbira
fuente
completamente probado :) resuelve su problema, incluso con algunas especificaciones que da en el comentario de @ChrisF. nota: en "delims = ¯", si se usa "¯" en un nombre de archivo, cambie "¯" con otro carácter que sepa que no se usa en los nombres de archivo
kokbira
votó por su script increíblemente largo para hacer un bucle y cambiar el nombre de algo. :)
wullxz
bueno, justamente, podría hacer un bucle "for / f" con todos los archivos ordenados por nombre y luego renombrarlos a "._lenameX.jpg" con X como número de pedido, pero pensé en una forma de hacerlo para otros casos - si en el futuro aparece un problema similar, alguien puede modificar algunos comandos ...
kokbira
puede usar "delims =" en lugar de "delims = ¯" (olvidé eso: D). También se puede utilizar para / f intead de para / f "delims =" porque hace lo que quiero en ese caso ...
kokbira
3

Si están todos en la misma carpeta, puede seleccionarlos todos con Control+ Ay luego presionar F2para cambiar el nombre de uno de ellos. Todos los archivos posteriores se denominarán archivo (2), archivo (3), etc.

bruno077
fuente
3

Pruebe Powershell (preinstalado en Windows 7):

Get-Childitem /path/to/your/files | foreach-object { move-item $_ $("._" + $_.name) }

(lo probé en mi directorio de descarga)

Editar : el código de Siim K agregará un ".jpg" adicional a cada "._filename.jpg". Elimine ese último ".jpg" en el código de Siim K y tendrá un código corto y elegante para cambiar el nombre de sus archivos.

wullxz
fuente
gracias, actualizado Código reutilizado de un comando de cambio de nombre similar que requirió la manipulación de la extensión y no se dio cuenta.
Siim K
3

Total Commander tiene una herramienta realmente agradable para renombrar múltiples.

György Andrasek
fuente
0

Siempre he encontrado que Flash Renamer es una buena herramienta para renombrar archivos en lotes.

Tiene versiones de prueba y completas ($ 20) y puede cambiar el nombre de los archivos en función de los metadatos, muy útil para cambiar el nombre de los archivos MP3, para lo que lo uso principalmente.

ajcw
fuente
0

Si está buscando una forma fácil de cambiar el nombre de forma masiva, puede probar la herramienta gratuita Ant Renamer , hay una gran lista de acciones que puede tomar y también ofrece una vista previa práctica antes de cambiar el nombre. Lo uso mucho cuando juego con mis bibliotecas de música, fotos o videos.

Chris
fuente
0

He utilizado este programa gratuito File Renamer con excelentes resultados. Muchos filtros y opciones diferentes, además le brinda la capacidad de probar resultados. Una interfaz de usuario un poco anticuada quizás pero funciona como un campeón.

http://www.webxpace.com/software/freeware.shtml#FileRenamer

Mark A
fuente