Добавление дня недели к имени файла в пакетном файле

Я хочу запустить ежедневную инкрементную резервную копию и добавить день недели к имени файла, чтобы в итоге:

backup_mon.bak
backup_tue.bak

и т.п.

Не очень беспокоиться о том, что именно добавлено – 0 – 6 в порядке.

Как мне это сделать?

Поскольку вы используете это для резервного копирования, вы предположительно запускаете скрипт с правами администратора, и в этом случае вы можете использовать wmic.

for /F "tokens=2 skip=2 delims=," %%D in ('WMIC Path Win32_LocalTime Get DayOfWeek /Format:csv') do @echo %%D 

Дает вам день недели как число (понедельник = 1).

Взгляните на расширенную математику даты и времени в пакетных файлах. Вы найдете там подпрограмму, которая преобразует дату в юлианский календарь и другую, которая сообщит вам день недели.

Если у вас нет проблем с вызовом внешнего скрипта, вы можете использовать VBScript, чтобы получить день недели очень легко:

Код VBScript:

 wscript.echo WeekdayName(Weekday(Date)) 

Вызвать его и использовать его в имени файла:

 for /f "delims=" %%a in ('cscript /nologo dayofweek.vbs') do @set myvar=%%a set filename=backup_%myvar%.bak 

То позже в вашем скрипте вы можете использовать переменную %filename% для доступа к ней. Например, если бы я запускал это сегодня, это создало бы файл backup_Sunday.bak . Убедитесь, что файл VBscript находится в том же каталоге, что и пакетный.

Давайте будем гением компьютера.