Можно решить задачку элегантней, но для этого придется предварительно скомпилировать
WMIC псевдоним для
WMI класса
Win32_LocalTime, после этого можно будет легко получать любые параметры
текущей даты, включая номер квартала, номер недели в месяце и т.д. MOF-файл (файл в WIN-кодировке):
Код:

#pragma namespace("\\\\.\\ROOT\\Cli")
instance of MSFT_CliAlias
{
Connection =
instance of MSFT_CliConnection
{
Locale = "ms_409";
NameSpace = "ROOT\\CIMV2";
Server = ".";
};
Description = "Местное время";
Formats =
{
instance of MSFT_CliFormat
{
Format = "TABLE";
Name = "BRIEF";
Properties =
{
instance of MSFT_CliProperty
{
Derivation = "DayOfWeek";
Description = "День недели";
Name = "DayOfWeek";
},
instance of MSFT_CliProperty
{
Derivation = "Year";
Description = "Год";
Name = "Year";
},
instance of MSFT_CliProperty
{
Derivation = "Month";
Description = "Месяц";
Name = "Month";
},
instance of MSFT_CliProperty
{
Derivation = "Day";
Description = "Число";
Name = "Day";
},
instance of MSFT_CliProperty
{
Derivation = "Hour";
Description = "Часы";
Name = "Hour";
},
instance of MSFT_CliProperty
{
Derivation = "Minute";
Description = "Минуты";
Name = "Minute";
},
instance of MSFT_CliProperty
{
Derivation = "Second";
Description = "Секунды";
Name = "Second";
}};
},
instance of MSFT_CliFormat
{
Format = "VALUE";
Name = "FULL";
Properties =
{
instance of MSFT_CliProperty
{
Derivation = "DayOfWeek";
Description = "День недели";
Name = "DayOfWeek";
},
instance of MSFT_CliProperty
{
Derivation = "WeekInMonth";
Description = "Неделя месяца";
Name = "WeekInMonth";
},
instance of MSFT_CliProperty
{
Derivation = "Year";
Description = "Год";
Name = "Year";
},
instance of MSFT_CliProperty
{
Derivation = "Quarter";
Description = "Квартал";
Name = "Quarter";
},
instance of MSFT_CliProperty
{
Derivation = "Month";
Description = "Месяц";
Name = "Month";
},
instance of MSFT_CliProperty
{
Derivation = "Day";
Description = "Число";
Name = "Day";
},
instance of MSFT_CliProperty
{
Derivation = "Hour";
Description = "Часы";
Name = "Hour";
},
instance of MSFT_CliProperty
{
Derivation = "Minute";
Description = "Минуты";
Name = "Minute";
},
instance of MSFT_CliProperty
{
Derivation = "Second";
Description = "Секунды";
Name = "Second";
},
instance of MSFT_CliProperty
{
Derivation = "MilliSeconds";
Description = "Миллисекунды";
Name = "MilliSeconds";
}};
},
instance of MSFT_CliFormat
{
Format = "Table";
Name = "SYSTEM";
Properties =
{
instance of MSFT_CliProperty
{
Derivation = "__PATH";
Name = "__PATH";
},
instance of MSFT_CliProperty
{
Derivation = "__NAMESPACE";
Name = "__NAMESPACE";
},
instance of MSFT_CliProperty
{
Derivation = "__SERVER";
Name = "__SERVER";
},
instance of MSFT_CliProperty
{
Derivation = "__PROPERTY_COUNT";
Name = "__PROPERTY_COUNT";
},
instance of MSFT_CliProperty
{
Derivation = "__RELPATH";
Name = "__RELPATH";
},
instance of MSFT_CliProperty
{
Derivation = "__DYNASTY";
Name = "__DYNASTY";
},
instance of MSFT_CliProperty
{
Derivation = "__SUPERCLASS";
Name = "__SUPERCLASS";
},
instance of MSFT_CliProperty
{
Derivation = "__GENUS";
Name = "__GENUS";
},
instance of MSFT_CliProperty
{
Derivation = "__CLASS";
Name = "__CLASS";
}};
}};
FriendlyName = "LocalTime";
PWhere = "Where Name='#'";
Target = "Select * From Win32_LocalTime";
};
Процедура компиляции (через MOFComp) одноразовая, но можно реализовать условную компиляцию... Например, если имя MOF-файла совпадает с именем CMD-файла, то для обеспечения корректной работы батника на любом компьютере можно добавить в начало скрипта две строчки:
Код:

WMIC LocalTime Get DayOfWeek >Nul
If ErrorLevel 1 MOFComp "%~dpn0.mof"
пример батника, использующего созданный псевдоним (DOS-кодировка):
Код:

@Echo Off
For /F "Skip=1" %%i In ('WMIC LocalTime Get DayOfWeek') Do Set DayOfWeek=%%i
For /F "Tokens=%DayOfWeek% Delims=," %%i In ("Понедельник,Вторник,Среда,Четверг,Пятница,Суббота,Воскресенье") Do Set DayOfWeekName=%%i
Echo Сегодня %DayOfWeekName%,
Echo это %DayOfWeek%-й день недели