4

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

backup_mon.bak
backup_tue.bak

и т.п.

Не особо беспокоит, что именно добавляется - 0 - 6 - это хорошо.

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

3 ответа3

3

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

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

Укажет день недели как число (понедельник = 1).

2

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

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .