Windows Batch Scripting

Procesamiento por lotes para la modificación de nombres de archivo

Spread the love

Este tutorial muestra cómo crear scripts por lotes para eliminar un número específico de caracteres del principio o del final de los nombres de archivo en un directorio. Los scripts por lotes proporcionan una manera simple pero poderosa de automatizar tareas de administración de archivos en Windows.

Tabla de contenido

Crear un archivo por lotes para eliminar caracteres

Comience creando un nuevo archivo de texto (por ejemplo, usando el Bloc de notas) y guárdelo con una extensión .bat (por ejemplo, renombrar_archivos.bat). Este archivo contendrá las instrucciones del script por lotes.

El núcleo de nuestro script aprovecha las capacidades de manipulación de cadenas del intérprete de comandos de Windows usando la sintaxis %variable:~start,length%. Esto extrae una subcadena de una variable. start es la posición inicial (índice basado en 0), y length es el número de caracteres a extraer. Un valor start negativo cuenta desde el final de la cadena.

Eliminar caracteres del final de los nombres de archivo

Vamos a ilustrar cómo eliminar los últimos 3 caracteres de todos los archivos .txt en un directorio:

@echo off
setlocal

for %%a in (*.txt) do (
  set "filename=%%a"
  set "newfilename=!filename:~0,-3!"
  if "!newfilename!"=="" (
    echo Omitiendo %%a: Nombre de archivo demasiado corto.
  ) else (
    ren "%%a" "!newfilename!"
  )
)

endlocal

Este script mejorado incluye manejo de errores para evitar problemas con nombres de archivo menores a 3 caracteres.

  • @echo off: Suprime la impresión de comandos.
  • setlocal: Crea un entorno local, aislando las variables.
  • for %%a in (*.txt) do (...): Itera a través de los archivos .txt.
  • set "filename=%%a": Asigna el nombre del archivo a una variable (las comillas manejan los espacios).
  • set "newfilename=!filename:~0,-3!": Extrae la subcadena (todos menos los últimos 3 caracteres).
  • if "!newfilename!"=="" (...): Verifica si hay nombres de archivo vacíos y los omite.
  • ren "%%a" "!newfilename!": Renombra el archivo (las comillas manejan los espacios).
  • endlocal: Finaliza el entorno local.

Eliminar caracteres del principio de los nombres de archivo

Para eliminar caracteres del principio, modifique la extracción de la subcadena. Por ejemplo, para eliminar los primeros 5 caracteres:

@echo off
setlocal

for %%a in (*.txt) do (
  set "filename=%%a"
  set "newfilename=!filename:~5!"
  ren "%%a" "!newfilename!"
)

endlocal

Aquí, ~5 inicia la extracción desde el sexto carácter (índice 5), eliminando efectivamente los primeros 5.

Manejo de errores y casos especiales

El script mejorado anterior incluye una verificación para nombres de archivo más cortos que la longitud de eliminación especificada. Esto evita errores y comportamientos inesperados. Para un manejo de errores más robusto, podría agregar verificaciones para archivos existentes con los nuevos nombres para evitar sobrescribir.

Uso avanzado: Eliminación de caracteres variable

Para eliminar un número variable de caracteres, use variables para definir el conteo. Puede solicitar al usuario que ingrese datos:

@echo off
setlocal

set /p "charsToRemove=Ingrese el número de caracteres a eliminar: "

for %%a in (*.txt) do (
  set "filename=%%a"
  set "newfilename=!filename:~%charsToRemove%!"
  ren "%%a" "!newfilename!"
)

endlocal

Recuerde validar la entrada del usuario para evitar resultados inesperados.

Conclusión

Esta guía mostró cómo crear scripts por lotes para eliminar caracteres de los nombres de archivo. Siempre realice una copia de seguridad de sus archivos antes de ejecutar estos scripts. Adapte estos scripts a sus necesidades específicas ajustando las extensiones de archivo, el conteo de caracteres y el manejo de errores.

Preguntas frecuentes

  • P: ¿Qué pasa si tengo espacios en mis nombres de archivo? R: Las comillas alrededor de los nombres de archivo en el comando ren son esenciales para manejar los espacios correctamente.
  • P: ¿Puedo eliminar un número variable de caracteres? R: Sí, como se muestra en la sección de uso avanzado.
  • P: ¿Qué pasa si el nombre del archivo es más corto que el número de caracteres que quiero eliminar? R: Los scripts mejorados manejan esto omitiendo los nombres de archivo cortos.
  • P: ¿Puedo usar esto en otros tipos de archivo? R: Sí, cambie *.txt en el bucle for al comodín deseado (por ejemplo, *.* para todos los archivos).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *