Разработка собственного фреймворка для тестирования в C#
UnmanagedCoder 04.05.2025
C# довольно богат готовыми решениями – NUnit, xUnit, MSTest уже давно стали своеобразными динозаврами индустрии. Однако, как и любой динозавр, они не всегда могут протиснуться в узкие коридоры. . .
Распределенная трассировка в Java с помощью OpenTelemetry
Javaican 04.05.2025
Микросервисная архитектура стала краеугольным камнем современной разработки, но вместе с ней пришла и головная боль, знакомая многим — отслеживание прохождения запросов через лабиринт взаимосвязанных. . .
Шаблоны обнаружения сервисов в Kubernetes
Mr. Docker 04.05.2025
Современные Kubernetes-инфраструктуры сталкиваются с серьёзными вызовами. Развертывание в нескольких регионах и облаках одновременно, необходимость обеспечения низкой задержки для глобально. . .
Создаем SPA на C# и Blazor
stackOverflow 04.05.2025
Мир веб-разработки за последние десять лет претерпел коллосальные изменения. Переход от традиционных многостраничных сайтов к одностраничным приложениям (Single Page Applications, SPA) — это. . .
Реализация шаблонов проектирования GoF на C++
NullReferenced 04.05.2025
«Банда четырёх» (Gang of Four или GoF) — Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес — в 1994 году сформировали канон шаблонов, который выдержал проверку временем. И хотя C++ претерпел. . .
C# и сети: Сокеты, gRPC и SignalR
UnmanagedCoder 04.05.2025
Сетевые технологии не стоят на месте, а вместе с ними эволюционируют и инструменты разработки. В . NET появилось множество решений — от низкоуровневых сокетов, позволяющих управлять каждым байтом. . .
Создание микросервисов с Domain-Driven Design
ArchitectMsa 04.05.2025
Архитектура микросервисов за последние годы превратилась в мощный архитектурный подход, который позволяет разрабатывать гибкие, масштабируемые и устойчивые системы. А если добавить сюда ещё и. . .
Многопоточность в C++: Современные техники C++26
bytestream 04.05.2025
C++ долго жил по принципу «один поток — одна задача» — как старательный солдатик, выполняющий команды одну за другой. В то время, когда процессоры уже обзавелись несколькими ядрами, этот подход стал. . .
Продвинутые List Comprehension в Python
py-thonny 04.05.2025
Когда я впервые столкнулся с list comprehension в Python, это было похоже на открытие тайной комнаты в знакомом доме. Вроде бы обычный цикл, но настолько элегантный, что заставляет переосмыслить. . .
Confluent Kafka Go и потоковые приложения в реальном времени на Golang
golander 03.05.2025
Мир обработки данных перевернулся, когда в 2011 году LinkedIn открыл исходный код Kafka – распределённой системы передачи сообщений, разработанной для внутренних нужд компании. Изначально Кафка. . .
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off | |
set /a y=%date:~6,4%&set /a m=1%date:~3,2%-100&set /a d=1%date:~0,2%-100 | |
set /a i=(%y%—1901)*365 + (%y%—1901)/4 + %d% + (!(%y% %% 4))*(!((%m%-3)^&16)) | |
set /a i=(%i%+(%m%—1)*30+2*(!((%m%—7)^&16))-1+((65611044^>^>(2*%m%))^&3))%%7+1 | |
for /f «tokens=%i% delims=/« %%a in (‘ | |
echo/1/2/3/4/5/6/7′) do set «w=%%a« | |
echo %w% | |
pause>nul |
Задача:
Необходимо получить день недели в командном файле (батнике)
Решение:
К сожалению, напрямую получить значение дня недели из батника не получится, но можно предложить альтернативные варианты, например, переписать батник в скрипт 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
|
|
|
Правила раздела Windows
1. Указывайте версию Вашей ОС.
2. Запрещается размещать запросы и ссылки на кряки, серийники и т.п., а также вопросы нарушения лицензии ПО и его взлома.
3. Не разрешается давать советы из разряда «Поставь Linux».
4. Переустановка ОС — крайнее и безотказное лекарство, которое знают все. В таких советах никто не нуждается.
5. При публикации скриптов пользоваться тегами code. Тип подсветки кода выбирать строго в соответствии с языком публикуемого кода.
6. Прежде чем задать вопрос, обязательно загляните в FAQ и следуйте написанным рекомендациям для устранения проблемы. И если не помогло, а поиск по разделу не дал результатов — только тогда задавайте вопрос на форуме.
7. Вопросы, связанные с проблемами ПО, задавайте в разделе Программное обеспечение
Узнать название дня недели в Bat-файле
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Junior Рейтинг (т): нет |
Привет |
e-moe |
|
Batch ? |
Спящий |
|
нет. Если только через rundll, но чего-то я сомневаюсь. Цитата D00M @ на языке Batch у командного языка нет названия. |
D00M |
|
Junior Рейтинг (т): нет |
Признаю, ошибся, но вопрос в силе) |
AlexLine |
|
Можно, если изначально потрроить вызов на WMI объекте! |
Спящий |
|
эт как? |
Иваныч |
|
Full Member Рейтинг (т): 43 |
DayOfWeek.cmd:
@echo off setlocal For /f «tokens=1-7 delims=.:/-, » %%i in (‘echo exit^|command /K prompt $D $T ‘) do ( For /f «tokens=2-4 delims=/-,() skip=1» %%a in (‘echo.^|date’) do ( set dow=%%i set %%a=%%j set %%b=%%k set %%c=%%l set hh=%%m set min=%%n set ss=%%o ) ) :: Результат For %%i in (dow dd mm yy hh min ss) do set %%i if «%dow%»==»Sat» goto Saturday :: продолжение проверки значений dow :: … :Saturday :: Суббота endlocal
В dow возвращает сокращенное значение дня недели. Остальные переменные, думаю, понятны. Сообщение отредактировано: Иваныч — |
Спящий |
|
Цитата Иваныч @ DayOfWeek.cmd еле дошло. В command.com и cmd.exe prompt работают по разному. кстати, вместо echo.^|date достаточно написать date /T Добавлено Сообщение отредактировано: Спящий — |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Windows
- Следующая тема
[ Script execution time: 0,0249 ] [ 15 queries used ] [ Generated: 5.05.25, 04:40 GMT ]
Overview
The DATE
command in Windows Command Prompt (CMD) allows users to display or set the system date. While primarily used for managing and modifying the date settings on a computer, this command can be essential for scripts that depend on date-specific processes or for administrative tasks requiring date verification or updates.
Syntax
The basic syntax for the DATE
command is:
DATE [/T | date]
DATE
with no parameters will display the current date and prompt the user to enter a new date (if permissions allow)./T
displays the current date without prompting for a new one.
When setting the date, the format you need to use can depend on your system locale settings, typically MM-DD-YYYY
in the United States.
Options/Flags
/T
: Displays the current date without prompting for a new date. Useful for scripts where you need to echo the current date without making changes.
By default, if you use DATE
with no flags, it will prompt you to enter a new date.
Examples
-
Display the current date:
DATE /T
Output might be
Tue 05/23/2023
depending on system settings. -
Set a new date:
DATE
This will prompt the user to enter a new date like
Enter new date (mm-dd-yy):
where the user needs to input the date as required.
Common Issues
- Permission Errors: When trying to set the date, you might encounter permission errors if not executed with administrative privileges. Run CMD as administrator to resolve.
- Format Confusion: Users often make mistakes related to the date format, especially in regions with different date formats (e.g., DD-MM-YYYY vs. MM-DD-YYYY). Always check your system’s locale settings.
Integration
The DATE
command can be integrated with other commands for automated scripts and logging. For example, creating a file with a date stamp in its name:
ECHO Hello, World! > Logfile_%date:/=%time::=s%.txt
This command sequence takes the current date and time, removes undesirable characters, and uses them in a filename, useful for time-stamped logging.
TIME
: Similar toDATE
, but for displaying or setting the system time.TIMESTAMP
: Used in scripts for logging or file creation with a timestamp.- More complex date manipulations may require PowerShell or external tools/scripts.
For further reading and more detailed information, refer to the Microsoft official documentation for CMD at: Windows Command Line Documentation.