Pergunta

Eu já vi gente fazer isso em Perl, mas eu estou querendo saber se há uma maneira de fazê-lo através de lote?É embutido no Windows, então eu acho que seria mais útil para saber como fazer isso com um script em lotes.Ele não necessita de instalar nada no computador.

Um exemplo de entrada de nome: myFile_55 Um exemplo de saída padrão:mudança myFile para picture e reduzir o número 13.Um exemplo de saída: picture_42.

Como você abordar isso?Eu sei que um lote de comandos para mudar o nome de:

ren myFile_55 picture_42.

Então, se eu tenho um arquivo chamado renamer.bat, Posso adicionar o seguinte:

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

Posso, então, digite este comando:

renamer.bat myfile* picture*.

Eu não sei como reduzir os números, no entanto.

Nenhuma solução correta

Outras dicas

Provavelmente, você pode colocar o nome do arquivo original através de um loop for, e extrair o nome e números, a matemática sobre os números e, em seguida, conecte-o novamente com o novo nome e o número.Enquanto o formato de nome de arquivo é name_number você pode usar esse:

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 o REN comando para incluir a unidade e o caminho do arquivo original.Alterado de minúsculas x para o caso de superior X como para não confundir %%~dpX.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top