Команда DATE отображает текущую дату и позволяет изменить её прямо из командной строки Windows. Помимо интерактивного режима, она поддерживает прямую передачу новой даты аргументом — это делает её удобной в автоматизированных скриптах.
- Синтаксис команды DATE
- Ключи и параметры
- Примеры использования
- Просмотр текущей даты без изменений
- Получить дату в переменную скрипта
- Изменение даты из командной строки
- Изменение даты в интерактивном режиме
- Добавление даты в имя лог-файла
- Быстрая проверка даты при диагностике
- Частые ошибки и решения
- Когда применять, а когда нет
- FAQ
- Как узнать текущую дату в CMD без изменений?
- В каком формате вводить дату для команды DATE?
- Нужны ли права администратора для изменения даты?
- Как использовать дату в имени файла в bat-скрипте?
- DATE изменяет дату только в Windows или в BIOS тоже?
- Есть ли аналог DATE в PowerShell?
Синтаксис команды DATE
DATE [/T | дата]
/T— только вывести текущую дату без запроса на изменениедата— новая дата в формате, зависящем от региональных настроек системы (обычнодд.мм.ггггдля русской локали илимм/дд/ггггдля английской)
Без аргументов DATE выводит текущую дату и запрашивает новую в интерактивном режиме. Нажмите Enter без ввода, чтобы оставить дату без изменений.
Ключи и параметры
| Ключ / параметр | Описание | Пример |
|---|---|---|
/T | Вывести текущую дату и выйти без запроса изменения | DATE /T |
дата | Установить дату напрямую (без интерактивного запроса). Формат зависит от локали | DATE 25.12.2024 |
| (без аргументов) | Вывести дату и перейти в интерактивный режим ввода новой даты | DATE |
/? | Вывод встроенной справки | DATE /? |
Примеры использования
Просмотр текущей даты без изменений
Самый безопасный способ узнать текущую дату в CMD без риска случайно её изменить.
DATE /T
Команда выведет текущую дату в одну строку и сразу завершится. Идеально для скриптов, где нужно только прочитать дату.
Получить дату в переменную скрипта
В bat-скриптах дату часто нужно сохранить в переменную для формирования имени файла резервной копии или лога.
FOR /F "tokens=1-3 delims=. " %%a IN ('DATE /T') DO (
SET dd=%%a
SET mm=%%b
SET yyyy=%%c
)
echo Дата: %yyyy%-%mm%-%dd%
Переменные %dd%, %mm%, %yyyy% будут содержать компоненты даты. Символ-разделитель зависит от региональных настроек: в русской Windows это точка (.), в английской — косая черта (/).
Изменение даты из командной строки
Требуется при настройке серверов или при восстановлении системы с неверной датой.
DATE 15.08.2024
Если формат указан верно, дата изменится немедленно без дополнительных запросов. Требуются права администратора.
Изменение даты в интерактивном режиме
Когда нужно ввести дату в диалоге — например, чтобы увидеть текущий формат перед вводом.
DATE
CMD покажет текущую дату и предложит ввести новую. Нажмите Enter без ввода, чтобы оставить дату неизменной и выйти.
Добавление даты в имя лог-файла
Стандартный приём в скриптах резервного копирования — добавить дату к имени файла.
@echo off
FOR /F "tokens=1-3 delims=." %%a IN ('DATE /T') DO SET fdate=%%c-%%b-%%a
echo Backup started > C:\Logs\backup_%fdate%.log
Результат: файл backup_2024-08-15.log. Формат гггг-мм-дд удобен для сортировки по имени.
Быстрая проверка даты при диагностике
При диагностике проблем с сертификатами и синхронизацией времени первый шаг — убедиться, что дата верна.
DATE /T && TIME /T
Выведет текущие дату и время одной строкой — быстрая проверка перед запуском w32tm /resync.
Частые ошибки и решения
| Ошибка / симптом | Причина | Решение |
|---|---|---|
| «Введён неверный формат даты» | Формат даты не совпадает с региональными настройками Windows | Проверьте формат командой DATE без аргументов — он будет показан в подсказке. Используйте тот же разделитель и порядок компонентов |
| «Отказано в доступе» при изменении даты | CMD запущена без прав администратора | Запустите CMD от имени администратора: ПКМ → «Запуск от имени администратора» |
| Дата в скрипте считывается неверно | Разделитель в дате зависит от локали: точка, косая черта или дефис | Укажите правильный разделитель в конструкции FOR /F "delims=." или используйте wmic os get LocalDateTime для независимого от локали формата |
| DATE /T выводит дату с лишними пробелами | В русской Windows перед датой стоит день недели (например «Чт 15.08.2024») | Используйте FOR /F "tokens=2" для извлечения только числовой части даты |
| После изменения даты она сбрасывается при перезагрузке | Аппаратные часы RTC настроены неверно или не синхронизируются с Windows | Воспользуйтесь w32tm /resync для синхронизации с NTP-сервером или проверьте батарейку BIOS |
Когда применять, а когда нет
Команда DATE полезна в bat-скриптах для чтения текущей даты и формирования имён файлов, а также для разовой ручной корректировки даты на изолированных системах без доступа к NTP. Изменение даты требует прав администратора и применяется немедленно.
Не используйте DATE для постоянной синхронизации времени — для этого есть служба W32Time и команда w32tm /resync. Если дата нужна в точном и независимом от локали формате, в скриптах предпочтительнее PowerShell: Get-Date -Format "yyyy-MM-dd" возвращает дату без зависимости от региональных настроек и не требует разбора строки.
FAQ
Как узнать текущую дату в CMD без изменений?
Выполните DATE /T. Ключ /T выводит дату и сразу завершает команду без запроса на ввод новой даты.
В каком формате вводить дату для команды DATE?
Формат зависит от региональных настроек. В русской Windows обычно дд.мм.гггг (например 15.08.2024). Введите DATE без аргументов — в строке подсказки будет показан актуальный формат для вашей системы.
Нужны ли права администратора для изменения даты?
Да. Изменение системной даты — привилегированная операция. CMD должна быть запущена от имени администратора, иначе команда завершится ошибкой «Отказано в доступе».
Как использовать дату в имени файла в bat-скрипте?
Используйте конструкцию FOR /F для разбора вывода DATE /T. Пример: FOR /F "tokens=1-3 delims=." %%a IN ('DATE /T') DO SET fdate=%%c-%%b-%%a — результат в переменной %fdate% в формате гггг-мм-дд.
DATE изменяет дату только в Windows или в BIOS тоже?
Windows синхронизирует изменения и в системных часах ОС, и в аппаратных часах RTC (BIOS). После перезагрузки дата сохранится, если батарейка BIOS исправна.
Есть ли аналог DATE в PowerShell?
Да. Для чтения: Get-Date или Get-Date -Format "yyyy-MM-dd". Для изменения: Set-Date -Date "2024-08-15". PowerShell не зависит от региональных настроек и возвращает объект DateTime, который удобнее парсить в скриптах.



Не работает: DATE /D