Мне нужно переименовать PDF-файлы, чтобы имя файла имело определенную длину. имена файлов inpu будут 123456_1.pdf
, 123_25.pdf
и выход должен быть 000.pdf
, 000000013025.pdf
. Перед номером _
номер должен быть заполнен до 10 символов нулями и после _
заполнен до 3 символов. цифры до и после _
являются variabel. Это номера customer_account. заблаговременнопакетное переименование файлов условный формат
ответ
Важно, чтобы имена, соответствующие вашему стартовому шаблону, были переименованы.
В DIR/B перечислены все файлы PDF, а FINDSTR хранит файлы, которые имеют все цифры до и после _
. Операторы IF убеждаются, что первое число не превышает 10 цифр, а второе число не превышает 3 цифры.
Наконец, классическая техника используется для заполнения чисел до заданной длины. Префикс каждого номера со строкой нулей, затем используйте операцию подстроки, чтобы сохранить правильное количество правой стороны.
@echo off
setlocal enableDelayedExpansion
for /f "tokens=1,2 delims=_." %%A in (
'dir /b /a-d *.pdf^|findstr /rix "[0-9]*_[0-9]*\.pdf"'
) do (
set "part1=%%A"
set "part2=%%B"
if "!part1:~0,10!" equ "!part1!" if "!part2:~0,3!" equ "!part2!" (
set "part1=0000000000%%A"
set "part2=000%%B"
ren "%%A_%%B.pdf" "!part1:~-10!!part2:~-3!.pdf"
)
)
Ниже совершенно другой способ, использующий REPL.BAT - a hybrid JScript/batch utility, который выполняет поиск по регулярному выражению и заменить на стандартном ввод и записывает результат на стандартный вывод. Утилита представляет собой чистый скрипт, который будет запускаться изначально на любой современной машине Windows с XP. В утилиту встроена полная документация. REPL.BAT должен быть размещен где-то внутри вашего PATH.
Предложение FOR IN() использует продолжение строки для удобства чтения. Он работает так же хорошо, как и одна непрерывная линия.
DIR/B просто перечисляет все файлы PDF.
Первый REPL соответствует только именам, состоящим из 1-10 цифр, а затем _
, а затем 1-3 разряда, а затем .pdf
. Он переформатирует название следующим образом: originalName:000000000FirstNumber_00SecondNumber.pdf
.
Второй REPL сохраняет исходное имя нетронутым, а затем переформатирует новое имя, сохраняя только правильные 10 цифр первого номера и правые самые 3 цифры второго номера, плюс расширение.
FOR/F анализирует каждый результат на оригинальное имя и новое имя, чтобы каждый файл можно было переименовать.
@echo off
for /f "tokens=1,2 delims=:" %%A in (
'dir /b *.pdf^|^
repl "^([0-9]{1,10})_([0-9]{1,3})\.pdf$" "$&:000000000$1_00$2.pdf" ai^|^
repl "(.*:).*(.{10})_.*(.{3}\.pdf)" "$1$2$3"'
) do ren "%%A" "%%B"
Попробуйте это:
@echo off
setlocal enabledelayedexpansion
pushd c:\temp
for /f "tokens=1,2 delims=_." %%a in ('dir /b *.pdf') do (
set num1=0000000000%%a
set num1=!num1:~-10!
set num2=000%%b
set num2=!num2:~-3!
echo ren %%a_%%b.pdf !num1!!num2!.pdf
)
Удалить эхо, чтобы сделать фактическое переименование.
- 1. пакетное переименование файлов сценариев
- 2. Пакетное переименование файлов
- 3. Пакетное переименование нескольких файлов?
- 4. Пакетное переименование файлов в Linux
- 5. Пакетное переименование файлов в каталоге
- 6. Пакетное переименование/перемещение/хеширование файлов
- 7. пакетное переименование файлов на дату
- 8. Пакетное переименование # недели
- 9. BASH: пакетное переименование файлов с infix
- 10. Пакетное переименование файлов в OSX-терминале
- 11. Пакетное переименование всех файлов в папке
- 12. Пакетное переименование файлов из разных переменных
- 13. Пакетное переименование пучки файлов в каталогах diff
- 14. пакетное переименование файлов с выражениями perl
- 15. Пакетное переименование файлов; проблемы с сортировкой хэшей
- 16. Пакетное переименование файлов с помощью Bash
- 17. Пакетное переименование файлов регулярного выражения на Mac
- 18. Пакетное переименование файлов в папке, добавив дату
- 19. пакетное переименование файлов 100K с помощью python
- 20. Пакетное переименование файлов с использованием имени папки?
- 21. пакетное переименование нескольких файлов в окнах?
- 22. Пакетное переименование файлов в UNIX и RollBack
- 23. Пакетное переименование файлов конфликтов удаленных окон
- 24. Пакетное переименование файлов путем переупорядочения имен
- 25. Пакетное переименование файлов для удаления определенных символов
- 26. Пакетное переименование файлов с регулярным выражением
- 27. Пакетное переименование файлов после определенного символа
- 28. Пакетное переименование файлов для изменения цифры
- 29. Пакетное переименование файлов, которые соответствуют правилу
- 30. Пакетное переименование в окнах
Ну новичок в этом, я нашел разные сценарии, которые говорят, как вы можете редактировать первое число символов с помощью ??????? _ ??? 000 ??? 00? но я не мог найти, как объявить числа как variabel. количество нулей, которые необходимо разместить, зависит от ввода. Цель состоит в попытке сценария, когда у меня есть эта информация. – user3266251