Manera fácil de renombrar todos los archivos en un directorio en Windows [cerrado]


9

¿Hay una manera fácil de cambiar el nombre de todos los archivos en un directorio? ¿Es PowerShell el camino a seguir?

Me gustaría ir de esto:

c:\family_pics\
   img123.jpg
   img124.jpg

a esto:

c:\family_pics\ 
   family_pics_1.jpg 
   family_pics_2.jpg

Idealmente, me gustaría ejecutar una secuencia de comandos en un directorio que cambiaría el nombre de todos los archivos según el nombre del directorio actual mientras conserva la extensión y recorrería el árbol de directorios de forma recursiva.

Respuestas:


16

Sobre la base de que todo se puede hacer en una línea de PowerShell (al igual que todo también se puede hacer en 1 línea de Perl), aquí está el código PS para un solo directorio.

$i=0; get-childitem $dirname | foreach-object {

       rename-item "$dirname\$_" $("{0}_{1}{2}" -f $dirname, ++$i, $_.Extension)
}

Para hacerlo de forma recursiva, debe envolver lo anterior en una función y luego llamarlo en cada directorio de su árbol. También podría reemplazar la cadena de formato con algo un poco más sofisticado si necesita usar expresiones regulares.


10

Esto es un poco raro, pero lo he hecho durante 12 años y soy bastante rápido en eso:

  • Abra un símbolo del sistema en c: \ family_pics y escriba dir >> dir.xls
  • Abra el archivo dir.xls en Excel
  • Resalte la primera columna, seleccione "Texto en columnas" y agregue saltos de columna en los caracteres de espacio (ignorando duplicados)
  • Ahora tiene una buena tabla con sus nombres de archivo actuales, tamaños de archivo, etc.
  • Agregue una nueva columna "ren" antes del nombre del archivo
  • Agregue una nueva columna después del nombre de archivo y use las funciones de Excel que desee para generar el nuevo nombre de archivo. En su caso, si escribe los dos primeros nombres de archivo y luego hace doble clic en la esquina inferior derecha de la celda, Excel detectará automáticamente el patrón y generará los nombres restantes.
  • Guardar como ren.bat
  • Ejecute el archivo por lotes que acaba de crear y cambiará el nombre de todos sus directorios

Aunque puede que no sea obvio de inmediato, Excel es muy adecuado para este tipo de tarea, porque puede usar cualquier tipo de fórmula que desee para generar los nuevos archivos, utilizando entradas de los archivos existentes (marca de tiempo, nombre de archivo, tamaño, etc. )


Excel es el mejor generador de código / script que conozco.
GvS

3

Aunque puede hacer cosas con un archivo por lotes, he descubierto que es mejor tener más control, opciones, etc. y una pista visual de lo que está por suceder.

Hay una herramienta gratuita llamada CKRename. El sitio del autor original parece haber desaparecido, pero la aplicación es completamente funcional y bastante popular (la he estado usando durante 8 años). Descargar CKRename

Aquí hay una captura de pantalla en acción ingrese la descripción de la imagen aquí


1

Puede resaltar todos los que desee en el explorador y luego hacer clic con el botón derecho en el primero y cambiarle el nombre y Windows los cambiará a todos con la misma convención de nomenclatura.


Solo lo intenté comenzando con fileA.m, fileB.m, etc. En lugar de fileA_001.m, fileB_002.m, en su lugar obtuve fileA_001.m, fileA_001 (1) .m, fileA_001 (2) .m, etc.
jacobsee

1

ReNamer: http://www.den4b.com/

Ver también: ¿Cómo renombrar parte de un nombre de archivo de una selección de archivos en Windows?

Coloque su carpeta con imágenes en ReNamer (las subcarpetas se agregarán recursivamente de forma predeterminada). Haga clic en la columna Nombre para ordenar por nombre de archivo si desea mantener el orden secuencial. La metaetiqueta especial le permitirá usar el nombre de la carpeta principal para cambiar el nombre. Use las siguientes reglas de cambio de nombre:

  1. Eliminar de la posición 1 hasta el final (extensión de omisión)
  2. Inserte ": File_FolderName: _" como prefijo (omitir extensión)
  3. Serializar incremental desde 1 paso 1 repetir 1 como sufijo (omitir extensión)

ingrese la descripción de la imagen aquí


¡Renombrar +1 fue simplemente increíble!
Chris Marisic



0

esto quita los últimos cuatro caracteres (generalmente la extensión)

dir *.jpg | % { ren $_.Name $_.Name.Substring(0,$_.Name.Length-4) }

Es posible que deba adaptar lo anterior para manejar espacios o sus requisitos específicos de cambio de nombre

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.