Вы не очень конкретны в отношении того, какие шаблоны существуют и какие правила следует соблюдать. В любом случае , моя гибридная утилита JEN.BAT для JREN.BAT должна легко и быстро удовлетворить ваши потребности. JREN.BAT переименовывает файлы с помощью замены регулярных выражений. Это чистый скрипт, который запускается изначально на любой машине с Windows начиная с XP.
Я предполагаю, что вы хотите переименовать все файлы .xlsx, которые имеют 6 цифр непосредственно перед расширением. Если это так, то старая дата на самом деле не имеет значения - вы можете просто переименовать все файлы, которые соответствуют шаблону, чтобы использовать сегодняшнюю дату:
@call jren "\d{6}(?=\.xlsx$)" "ts({fmt:'{mm}{dd}{yy}'})" /i /j
Если есть файлы, которые соответствуют шаблону, но их не следует переименовывать, поскольку они содержат неправильную дату, тогда вы можете просто указать целевую старую дату в качестве аргумента и заменить ее старой 6-значной маской:
@call jren "%1(?=\.xlsx$)" "ts({fmt:'{mm}{dd}{yy}'})" /i /j
Если вышеуказанный сценарий был назван fixDate.bat, то вы должны использовать fixDate 030315
из командной строки.
Если вы хотите вычислить старую дату, вы можете добавить мою гибридную утилиту getTimestamp.bat и использовать следующий пакетный скрипт.
@echo off
setlocal
call getTimestamp /f "{w}" /r dayOfWeek
set "offset=-1"
if %dayOfWeek% equ 1 then set "offset=-3"
call getTimestamp /od %offset% /f "{mm}{dd}{yy}" /r oldDay
call jren "%oldDay%(?=\.xlsx$)" "ts({fmt:'{mm}{dd}{yy}'})" /i /j
Независимо от ваших точных требований, вы сможете использовать эти две утилиты для удовлетворения ваших потребностей. Обе утилиты чрезвычайно гибки со многими опциями. Помощь можно получить из командной строки, используя:
jren /?
getTimestamp /?
Возможно, вы захотите направить помощь через БОЛЬШЕ, чтобы вы могли прочитать каждую строку, прежде чем она прокрутится с экрана. Моя консоль настроена на большой буфер, поэтому я могу прокручивать, чтобы увидеть предыдущие строки вывода, поэтому мне не нужно больше.
jren /? | more
getTimestamp /? | more