Партия:как массово переименовывать файлы (приближаясь)?
-
12-11-2019 - |
Вопрос
Я видел, как люди делали это в Perl, но мне интересно, есть ли способ сделать это в пакетном режиме?Он встроен в Windows, поэтому я думаю, что было бы полезнее знать, как сделать это с помощью пакетного сценария.Для этого не требуется ничего устанавливать на компьютер.
Пример входного имени: myFile_55
Пример шаблона вывода:изменять myFile
к picture
и уменьшите число на 13.Пример вывода: picture_42
.
Как бы вы к этому подошли?Я знаю пакетную команду для переименования:
ren myFile_55 picture_42
.
Итак, если у меня есть файл с именем renamer.bat
, могу добавить следующее:
for /r %%x in (%1) do ren "%%x" %2
.
Затем я могу ввести эту команду:
renamer.bat myfile* picture*
.
Но я не знаю, как уменьшить количество.
Нет правильного решения
Другие советы
Вероятно, вы можете поместить исходное имя файла в цикл for и извлечь имя и числа, выполнить математические вычисления с числами, а затем снова подключить его с новым именем и номером.Пока формат имени файла name_number
вы можете использовать это:
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!"
)
)
РЕДАКТИРОВАТЬ:Отредактировал REN
команда, чтобы включить диск и путь к исходному файлу.Изменен нижний регистр x на верхний регистр X, чтобы не путать. %%~dpX
.