Задача:
Необходимо получить день недели в командном файле (батнике)
Решение:
К сожалению, напрямую получить значение дня недели из батника не получится, но можно предложить альтернативные варианты, например, переписать батник в скрипт PowerShell или сделать vbs (Visual Basic Script) вставку в bat-файл:
Для получения номера дня недели в VBS используем конструкцию типа этих:
Код: Выделить всё
Weekday(Date)
Weekday(Now)
DatePart("w",Now)
А для получения названия, типа этих:
Код: Выделить всё
WeekdayName(Weekday(Date))
WeekdayName(Weekday(Now))
WeekdayName(DatePart("w",Now))
Теперь получим из bat-файла день недели, найденный в VBS:
Код: Выделить всё
@echo off
echo WScript.Echo WeekdayName(Weekday(Now)) > ~weekdaytmp.vbs
for /f %%i in ('cscript /nologo ~weekdaytmp.vbs') do set WeekDayName=%%i
del /q ~weekdaytmp.vbs
echo %WeekDayName%
Дополнение:
Таблица соответствий номеров дням недели:
Константа VB (Значение перечисления) | Значение | Описание |
vbUseSystemDayOfWeek (FirstDayOfWeek.System) | 0 | Первый день недели, заданный в параметрах системы (по умолчанию) |
vbSunday (FirstDayOfWeek.Sunday) | 1 | Воскресенье |
vbMonday (FirstDayOfWeek.Monday) | 2 | Понедельник (соответствует стандарту ISO 8601, раздел 3.17) |
vbTuesday (FirstDayOfWeek.Tuesday) | 3 | Вторник |
vbWednesday (FirstDayOfWeek.Wednesday) | 4 | Среда |
vbThursday (FirstDayOfWeek.Thursday) | 5 | Четверг |
vbFriday (FirstDayOfWeek.Friday) | 6 | Пятница |
vbSaturday (FirstDayOfWeek.Saturday) | 7 | Суббота |
Дополнение:
Номер дня недели можно получить через WMIC:
Код: Выделить всё
For /F "Skip=1" %%i In ('WMIC Path Win32_LocalTime Get DayOfWeek') Do Set /A $DayOfWeek=%%i+1&GoTo DayOfWeek
:DayOfWeek