Pregunta

He visto a gente hacer esto en Perl, pero me pregunto si hay alguna manera de hacerlo por lotes.Está integrado en Windows, por lo que creo que sería más útil saber cómo hacerlo con un script por lotes.No requiere instalar nada en una computadora.

Un nombre de entrada de ejemplo: myFile_55Un patrón de salida de ejemplo:cambiar myFile a picture y reducir el número en 13.Un resultado de ejemplo: picture_42.

¿Cómo abordarías esto?Conozco un comando por lotes para cambiar el nombre:

ren myFile_55 picture_42.

Entonces, si tengo un archivo llamado renamer.bat, puedo agregar lo siguiente:

for /r %%x in (%1) do ren "%%x" %2.

Entonces puedo escribir este comando:

renamer.bat myfile* picture*.

Aunque no sé cómo reducir los números.

No hay solución correcta

Otros consejos

Probablemente pueda colocar el nombre del archivo original a través de un bucle for y extraer el nombre y los números, hacer los cálculos con los números y luego volver a conectarlo con el nuevo nombre y número.Siempre que el formato del nombre de archivo sea name_number puedes usar esto:

REM Allow for numbers to be iterated within the for-loop i.e. the i - z
SETLOCAL ENABLEDELAYEDEXPANSION
SET i=0
SET z=13
SET newName=picture
SET workDir=C:\Path\To\Files

REM Given that filenames are in the format of 'Name_number', we're going to extract 'number
REM and set it to the i variables, then subtract it by 13, then rename the original file
REM to what the newName_x which if the filename was oldName_23 it would now be newName_10
FOR /r %%X in (%1) do (
  FOR /F "tokens=1-2 delims=_" %%A IN ("%%X") DO (
    SET i=%%B
    SET /A x=!i! - %z%

    REM ~dpX refers to the drive and path of the file
    REN "%%~dpX\%%A_%%B" "%newName%_!x!"
  )
)

EDITAR:Editado el REN comando para incluir la unidad y la ruta del archivo original.Se cambió de x minúscula a X mayúscula para no confundir %%~dpX.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top