У меня есть существующий пакетный файл, в то время как я использую для создания файлов проекта из набора файлов шаблонов.Пакетный файл создает структуру папок и копирует в них серию файлов.Большинство этих файлов названы с использованием той же структуры, например:
PPPP-123_456a.dwg
В моем пакетном файле в настоящее время используется следующая строка для замены «PPPP» на фактический номер проекта:
for /r "%ProjDir%" %%f in (PPPP*) do (rename "%%f" "%ProjectNumber%*")
Где ProjDir - это путь к папке, созданной пакетным файлом, а ProjectNumber - номер проекта.
Что отлично работает.Моя проблема в том, что некоторые номера проектов клиентов теперь до 5 цифр, в то время как другие номера проектов на 4 цифры.Мне нужно изменить эту строку, чтобы она корректно работала с 4- или 5-значными номерами проектов.
То, что я пробовал:
Если я использую его как есть с номером проекта 12345, мой файлимя меняется с PPPP-123_456a.dwg на 12345123_456a.dwg - вместо вставки дополнительного символа команда переименования просто перезаписывает существующие символы, поэтому я теряю первую черту в имени файла.
Если я переименую все файлы шаблоначтобы начать с PPPPP, я не могу использовать его для четырехзначного номера проекта, или результат будет 1234P-123_456a.dwg.
Если я удаляю все ведущие буквы P из файлов шаблонов, а затем изменяюкод для:
for /r "%ProjDir%" %%f in (PPPP*) do (rename "%%f" "%ProjectNumber%%%f")
… затем он пытается применить префикс номера проекта к началу пути к файлу, а не к имени файла (т.е. он пытается переименовать C: /Test/-123_456a.dwgдо 12345C: /Test-123_456a.dwg).Похоже, это моя ближайшая попытка, мне просто нужно найти способ заставить его применять префикс к части имени файла строки, а не ко всей строке.Но я не уверен, как это сделать.
TL; DR, Как я могу использовать командный файл, чтобы правильно применить префикс произвольной длины к каталогу файлов?