Ви не дуже конкретні щодо того, які закономірності існують та яких правил слід дотримуватися. Незважаючи на те, моя гібридна утиліта JScript / пакетна JREN.BAT повинна мати можливість легко та швидко відповідати вашим потребам. JREN.BAT перейменовує файли за допомогою регулярної заміни виразів. Це чистий сценарій, який працює на будь-якій машині Windows від XP далі.
Я припускаю, що ви хочете перейменувати всі .xlsx файли, які мають 6 цифр безпосередньо перед розширенням. Якщо це так, то стара дата насправді не має значення - ви можете просто перейменувати всі файли, які відповідають шаблону, щоб використовувати сьогоднішню дату:
@call jren "\d{6}(?=\.xlsx$)" "ts({fmt:'{mm}{dd}{yy}'})" /i /j
Якщо є файли, які відповідають шаблону, але їх не слід перейменовувати, оскільки вони містять неправильну дату, то ви можете просто надати цільову стару дату як аргумент та замінити її на стару шестизначну маску:
@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