У меня есть каталог mp3-файлов, отсортированный по Date created:

newest.mp3
new.mp3
old.mp3
older.mp3
oldest.mp3

Я хочу переименовать каждый файл в этом каталоге с новым именем, включая целочисленное значение, которое увеличивается для каждого файла (начиная с самого нового файла):

newest.mp3 --> new_name_1.mp3
new.mp3    --> new_name_2.mp3
old.mp3    --> new_name_3.mp3
older.mp3  --> new_name_4.mp3
oldest.mp3 --> new_name_5.mp3

Как я могу сделать это автоматически (без необходимости вручную rename каждый файл)?

В частности, я ищу команду, чтобы по существу сделать это:

sort each file by date created
i = 1
for each fil in dir:
    rename file: new_name_$i++.mp3

2 ответа2

1

Вот способ сделать это

setlocal enabledelayedexpansion
set "count=1"
for /f "delims=*" %%f in ('dir /b /o:-d /tc *.mp3') do (
    ren %%f new_name_!count!.mp3
    set /a count+=1
)
  • dir /b: вывод файлов в голом формате (только имена файлов)
  • /o:-d: сортировать по дате, сначала новые
  • /tc: сортировка по дате создания. Вы можете изменить C на A или W для времени доступа и времени модификации

Затем каждая строка вывода читается с использованием for /f

Чтобы он работал для любого каталога, измените цикл на

for /f "usebackq delims=*" %%f in (`dir /b /o:-d /tc "%1\*.mp3"`)

и передать каталог в первом параметре

Чтобы получить справку по любым командам в Windows cmd, просто используйте /?

0

Хотя это может быть написано в сценарии, в комментариях к вашему вопросу вы не делаете сценарии.

Существует ряд бесплатных утилит для переименования файлов, которые могут выполнить то, что вы хотите. Утилита Bulk Rename - одна из многих, которые вы можете искать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .