Я хочу запустить ежедневное инкрементное резервное копирование и добавить день недели к имени файла, чтобы я получил:
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 находится в том же каталоге, что и пакетный скрипт.