UncleFather » 21 мар 2014 06:54, Пт
Задача:
Необходимо получить день недели в командном файле (батнике)
Решение:
К сожалению, напрямую получить значение дня недели из батника не получится, но можно предложить альтернативные варианты, например, переписать батник в скрипт 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) | | Первый день недели, заданный в параметрах системы (по умолчанию) |
vbSunday (FirstDayOfWeek.Sunday) | | Воскресенье |
vbMonday (FirstDayOfWeek.Monday) | | Понедельник (соответствует стандарту ISO 8601, раздел 3.17) |
vbTuesday (FirstDayOfWeek.Tuesday) | | Вторник |
vbWednesday (FirstDayOfWeek.Wednesday) | | Среда |
vbThursday (FirstDayOfWeek.Thursday) | | Четверг |
vbFriday (FirstDayOfWeek.Friday) | | Пятница |
vbSaturday (FirstDayOfWeek.Saturday) | | Суббота |
Дополнение:
Номер дня недели можно получить через WMIC:
Код: Выделить всё
For /F "Skip=1" %%i In ('WMIC Path Win32_LocalTime Get DayOfWeek') Do Set /A $DayOfWeek=%%i+1&GoTo DayOfWeek
:DayOfWeek
[b][size=150]Задача:[/size][/b]
Необходимо получить день недели в командном файле (батнике)
[b][size=150]Решение:[/size][/b]
К сожалению, напрямую получить значение дня недели из батника не получится, но можно предложить альтернативные варианты, например, переписать батник в скрипт PowerShell или сделать vbs (Visual Basic Script) вставку в bat-файл:
Для получения номера дня недели в VBS используем конструкцию типа этих:
[code]Weekday(Date)
Weekday(Now)
DatePart("w",Now)[/code]
А для получения названия, типа этих:
[code]WeekdayName(Weekday(Date))
WeekdayName(Weekday(Now))
WeekdayName(DatePart("w",Now))[/code]
Теперь получим из bat-файла день недели, найденный в VBS:
[code]@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%[/code]
[b][size=150]Дополнение:[/size][/b]
Таблица соответствий номеров дням недели:
[table=table1][tr=row2][td=1,row2,40][b][center]Константа VB (Значение перечисления)[/center][/b][/td][td=1,row2,20][b][center]Значение[/center][/b][/td][td=1,row2,40][b][center]Описание[/center][/b][/td][/tr][tr=row2][td=1,row2,40]vbUseSystemDayOfWeek (FirstDayOfWeek.System)[/td][td=1,row2,20][center]0[/center][/td][td=1,row2,40]Первый день недели, заданный в параметрах системы (по умолчанию)[/td][/tr][tr=row2][td=1,row2,40]vbSunday (FirstDayOfWeek.Sunday)[/td][td=1,row2,20][center]1[/center][/td][td=1,row2,40]Воскресенье[/td][/tr][tr=row2][td=1,row2,40]vbMonday (FirstDayOfWeek.Monday)[/td][td=1,row2,20][center]2[/center][/td][td=1,row2,40]Понедельник (соответствует стандарту ISO 8601, раздел 3.17)[/td][/tr][tr=row2][td=1,row2,40]vbTuesday (FirstDayOfWeek.Tuesday)[/td][td=1,row2,20][center]3[/center][/td][td=1,row2,40]Вторник[/td][/tr][tr=row2][td=1,row2,40]vbWednesday (FirstDayOfWeek.Wednesday)[/td][td=1,row2,20][center]4[/center][/td][td=1,row2,40]Среда[/td][/tr][tr=row2][td=1,row2,40]vbThursday (FirstDayOfWeek.Thursday)[/td][td=1,row2,20][center]5[/center][/td][td=1,row2,40]Четверг[/td][/tr][tr=row2][td=1,row2,40]vbFriday (FirstDayOfWeek.Friday)[/td][td=1,row2,20][center]6[/center][/td][td=1,row2,40]Пятница[/td][/tr][tr=row2][td=1,row2,40]vbSaturday (FirstDayOfWeek.Saturday)[/td][td=1,row2,20][center]7[/center][/td][td=1,row2,40]Суббота[/td][/tr][/table]
[hr][/hr]
[b][size=150]Дополнение:[/size][/b]
Номер дня недели можно получить через WMIC:
[code]For /F "Skip=1" %%i In ('WMIC Path Win32_LocalTime Get DayOfWeek') Do Set /A $DayOfWeek=%%i+1&GoTo DayOfWeek
:DayOfWeek[/code]