Страница 1 из 1

Как узнать день недели из командной строки

Добавлено: 21 мар 2014 06:54, Пт
UncleFather

Задача:

Необходимо получить день недели в командном файле (батнике)

Решение:

К сожалению, напрямую получить значение дня недели из батника не получится, но можно предложить альтернативные варианты, например, переписать батник в скрипт 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