@Equess
Инженер

Как массово переименовать файлы формата PDF с нумерацией?

Доброе время суток!!!
По своей деятельности, мне приходится составлять реестры с перечнем файлов в папке.
В реестре должна сохранятся последовательность файлов в независимости от нумерации ( к примеру: 1. АОСР_№1 2.АООК_№2 3.АОСР_№2), если просто вручную удалять нумерацию, порядок собъется ( АООК_№2, АОСР_№1, АОСР_№2). Так же необходимо заменить любую имеющуюся нумерацию типа 1,2,3 или 01,02,03 на 001,002,003 опять же сохраняя последовательность файлов после переименования.

Скидываю свои наработки по переименованию файлов по типу 001,002,003. Батник
Данный батник нумерует pdf файлы в папке по типу 001,002,003
@echo off
setlocal enableextensions EnableDelayedExpansion

set n=1000
for %%a in (*) do if /i "%%~xa"==".pdf" (
set /a n+=1
set num=!n:~1!
call ren "%%a" "!num!.%%a"
)
pause


Необходим по возможности батник, так как возможности установить на рабочий компьютер стороних программ нет
Надеюсь мой вопрос максимально понятен.
По сути нужно переименовать файлы с 1,2,3 или 01,02,03 в 001,002,003 при этом сохраняя порядок файлов в папке.
  • Вопрос задан
  • 683 просмотра
Решения вопроса 1
@res2001
Developer, ex-admin
Сложность в том, что нужно выделить из имени файла его номер и добавить нужное количество нулей.
Выделить номер можно загнав имя файла в цикл for /f и разделив его на токены. Из токенов нас интересует только 1 токен (номер):
for %%a in (*) do if /i "%%~xa"==".pdf" for /f "tokens=1,* delims=." %%b in (%%a) do (
  echo %%b
)

Во внутреннем цикле в переменной %%b будет номер файла.
Для того чтобы добавить нужное количество нулей, нужно знать длину номера.
Функцию определения длины строки возьмите на сером форуме.
Сам ею не однократно пользовался.
Ну а дальше просто добавьте впереди 3 нуля к имени файла, а потом обрежте лишние. Команда set умеет выделять подстроки.
Для справки:
for /?
set /?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Присмотритесь к vbs или PowerShell первый есть вообще везде. Второй на более менее современных машинах. Просто cmd несколько ограничен по умолчанию.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы