Windows cmd время дата

Как можно работать с переменными среды %date% и %time% в коммандных файлах Windows .cmd / .bat

Иногда требуется сформировать переменную даты и времени в cmd / bat скриптах windows так, как нужно нам, а не так, как нам отдаёт операционная система.

Например чтоб добавить эти данные в log файл, для фиксации времени или даты события, создать файл с именем, в котором должны фигурировать данные даты или времени (день, месяц, год, час, минуты, скунды, миллисекунды.) Да мало-ли, какие у нас задачи. Подключаем нашу фантазию 🙂

В следующем примере мы видим разбиение переменных по нужным нам шаблонам.

h- час 2 знака (то есть час будет выдаваться в следующем виде — 01, 02, . 09, . , 12, . 24)

m — минуты 2 знака

s — секунжы 2 знака

ms — миллисекунды 2 знака, почему-то от 0 до 99

dd — день 2 знака

mm — месяц 2 знака

yyyy — год 4 знака

Пример использования переменных %DATE% и %TIME% в скриптах cmd / bat Windows:

@echo off
set h=%TIME:

9,2%
set curtime=%h%:%m%:%s%:%ms%
set dd=%DATE:

3,2%
set yyyy=%DATE:

6,4%
set curdate=%dd%-%mm%-%yyyy%
set curdatetime=%curdate% %curtime%

echo Текущее время — %curdatetime%

В некоторых версиях Windows формат выдачи даты и времени другой, поэтому данный скрипт может работать совсем так как нам нужно.

По идее, подобным способом можно брать части любых переменных, суть в том что формат здесь такой:

Первая цифра после :

— это номер символа, с которого мы начинаем брать значение, вторая цифра это сколько символов захватывать.

Таким образом получается что мы можем взять для своих нужд любую часть, любой доступной нам переменной среды Windows.

Мне известны следующие переменные, значения которых мы можем получить:

Как изменить системные дату и время

Часто мы сталкиваемся с необходимостью сменить системное время и дату. Например, при переходе на летнее время или в поездке в местность с другим часовым поясом. На сегодняшний день переход на летнее в России отменен. Если автоматический переход на летнее время все же производится, нужно снять галочку в настройках даты и времени «Автоматический переход на летнее время и обратно». Однако, операционные системы многих пользователей не обновлены, такой галочки в настройках нет и данный переход осуществляется в автоматическом режиме.

Настройки даты также могут изменяться пользователями при обходе контроля лицензий приложений, если они привязаны к дате, а также при использовании VPN. В этой статье рассмотрим некоторые способы изменения системных даты и времени.

Изменение системных даты и времени в операционной системе Windows

Меняем дату и время через параметры даты и времени

Независимо от версии Windows можно сменить дату и время, щелкнув левой кнопкой мыши по часам в правом нижнем углу либо открыть Панель инструментов. В версиях более ранних, Windows 10, необходимо выбрать «Изменение настроек даты и времени», в Windows 10 для изменения даты и времени необходимо открыть «Параметры даты и времени». При этом может потребоваться ввод пароля администратора системы.

Далее меняете часовой пояс, дату и время на необходимые.

Меняем дату и время через командную строку

Чтобы воспользоваться командной строкой для изменения даты и времени, откройте командную строку с правами администратора. В Windows 7 и более поздних версий просто введите в строке поиска командная строка или cmd, щелкните по результату правой кнопкой мыши и выберите запуск от имени администратора. (подробнее о работе с командной строкой можно прочитать тут).

Команда для изменения времени time ЧЧ:ММ:СС (где ЧЧ – часы, ММ – минуты, СС – секунды), введите ее и нажмите Enter на клавиатуре.

Команда для изменения даты date ДД/ММ/ГГГГ (где ДД – день, ММ – месяц, ГГГГ – год), введите ее и нажмите Enter на клавиатуре.

Читайте также:  Windows 10 легкая игровая

Параметры даты и времени изменятся моментально, но сохранятся до первой перезагрузки. При следующем включении компьютера или после перезагрузки дата и время вернутся к исходному значению.

Такой способ удобен, если изменение системных даты и времени необходимы для временной настройки в целях обхода лицензии или использования VPN.

cmd дата и время

DATE и TIME имеют сходный формат командной строки и используются для отображения или изменения текущей даты или времени.

Формат командной строки DATE:

Команда DATE без параметров отображает текущую дату и запрашивает ввод новой даты. Для сохранения текущей даты нажмите клавишу ENTER.

Формат командной строки TIME:

Введите TIME без параметров для вывода текущего времени и запроса на ввод нового времени. Нажмите клавишу ENTER для сохранения текущего времени.

date — отобразить текущую дату. Результат:
Текущая дата: 28.09.2012
Введите новую дату (дд-мм-гг):

Установить новое значение даты:

date /T 28.09.2012

Отобразить текущее время:

Или то же, но с интерактивным запросом:

Текущее время: 8:20:04,96
Введите новое время: 8:30

Установить новое значение времени через параметр командной строки ( без запроса ):

Как я могу получить имя файла YYYY.MM.DD_HH.MM.SS.7z? Он должен работать с любыми региональными настройками!

3 ответа

Хорошо, когда этот вопрос является технически другим вопросом, ответ по существу тот же, что и другой вопрос:

Поскольку вы указали, что он должен работать с любыми региональными настройками, этот ответ не полностью отвечает вашим потребностям. Насколько я знаю, нет никакого способа удовлетворить ваши потребности изнутри cmd.exe. Я очень рекомендую сделать это в powershell вместо cmd.

Команда:

Вывод:

title Переименовать на дату и время

:: Chunks собраны здесь и amp; там».

:: Пакетное переименование 1 на 1 w. короткая задержка,

:: на сегодняшний день + время w. миллисекунды = >

:: Западно-европейские региональные настройки:

:: ОК. ЛЮБЫЕ региональные настройки:? .. Можете

:: require ‘env. замены переменных.

установить «source = 1_7z-orig-files-dir»

установить «target = 2_tmp»

если не существует «% target% » md «% target%»

если не существует «% source% *. 7z» goto END

Update: теперь, когда это 2016 год, я бы использовал PowerShell для этого, если только для этого нет действительно убедительной обратной совместимой причины, особенно из-за проблемы с региональными настройками с использованием date . См. @npocmaka по https://stackoverflow.com/a/19799236/8479

что такое оператор(ы) командной строки Windows, который я могу использовать для получения текущей даты и времени в формате, который я могу поместить в имя файла?

Я хочу иметь .bat-файл, который застегивает каталог на молнию архив с текущей датой и временем в составе имени, например, Code_2008-10-14_2257.zip . Есть ли простой способ сделать это, независимо от региональных настроек машины?

Я действительно не возражаю против формата даты, в идеале это было бы yyyy-mm-dd, но все просто отлично.

пока у меня есть это, что на моей машине дает мне Tue_10_14_2008_230050_91 :

Я могу жить с этим, но это кажется немного неуклюжим. В идеале это было бы короче и иметь упомянутый формат ранее.

Я использую Windows Server 2003 и Windows XP Professional. Я не хочу устанавливать дополнительные утилиты для достижения этой цели (хотя я понимаю, что есть некоторые, которые сделают хорошее форматирование даты).

26 ответов:

Если вы предпочитаете время в 24-часовом / военном формате, вы можете заменить вторую строку на эту:

Если вы хотите дату независимо от региона день/месяц заказа, вы можете использовать «WMIC os GET LocalDateTime» в качестве источника, так как он находится в ISO порядок:

C: тест>.cmd
Локальная дата-это [2012-06-19 10:23:47.048]

региональный независимый разбор даты и времени

выходной формат %DATE% и dir команда зависит от региона и, следовательно, не является ни надежной, ни умной. дата.exe (часть UnxUtils) предоставляет любую информацию о дате и времени в любом мыслимом формате. Вы также можете извлечь информацию о дате / времени из любого файла с помощью date.exe .

примеры: (в cmd-скрипте используйте %% вместо %)

date.exe +»%Y%m%d %H%M%S: Any text»
20091222 185503: любой текст

date.exe +»Text: %y/%m/%d-any text-%H.%M»
Текст: 09/12/22-любой текст-18.55

Command: date.exe +»%m-%d «»»%H %M %S «»»»
07-22 «18:55:03″`

информация о дате / времени из файла ссылки:
date.exe -r c:file.txt +»The timestamp of file.txt is: %Y-%m-%d %H:%M:%S»

Читайте также:  Disable pin code windows 10

используя его в сценарии CMD, чтобы получить информацию о годе, месяце, дне, времени:

использовать его в сценарии CMD, чтобы получить метку времени в любом требуемом формате:

извлечение информации о дате / времени из любого справочного файла.

добавление в файл информации о дате/времени:

дата.ехе часть свободных инструментов GNU которые не нуждаются в установке.

копирование date.exe в любой каталог, который находится в пути поиска может привести к сбою других сценариев, которые используют встроенный в Windows date команда.

еще два способа, которые не зависят от настроек времени (взято из : как получить данные / время независимо от локализации:). И как же сделать день недели, и ни один из них не требует разрешения администратора!:

MAKECAB — будет работать на каждой системе Windows (быстро, но создает небольшой временный файл) (скрипт foxidrive):

ROBOCOPY — это не родная команда для Windows XP и Windows Server 2003, но это может быть загружено с сайта microsoft. Но встроен во все, начиная с Windows Vista и выше:

и еще три способа, которые используют другие языки сценариев Windows. Они дадут вам больше гибкости, например, вы можете получить неделю в году, время в миллисекундах и так далее на.

JScript / batch гибрид (нужно сохранить как .bat ). JScript доступен в каждой системной форме NT и выше, как часть Windows Script Host (хотя можно отключить через реестр это редкий случай):

VSCRIPT / BATCH гибридный (можно ли внедрить и выполнить VBScript в пакетном файле без использования временный файл?) тот же случай, что и JScript, но гибридизация не так совершенна:

PowerShell — может быть установлен на каждой машине, которая имеет .NET-скачать с Microsoft ( v1, v2, v3 (только для Windows 7 и выше)). Он устанавливается по умолчанию на все Windows 7 и Windows Server 2008 и выше:

чтобы использовать его из пакета файл:

Самокомпилируется jscript.net/batch (никогда не видел машину Windows без .NET, поэтому я думаю, что это довольно портативный):

Логман это не может получить год и день недели. Он сравнительно медленный, а также создает временный файл и основан на отметках времени, которые logman помещает в свои файлы журналов. Он будет работать на все, начиная с Windows XP и выше. Наверное никогда не будет использоваться никем-включая меня-но это еще один способ.

еще один способ с WMIC который также дает неделю года и день недели, но не миллисекунды (для миллисекунд проверьте ответ foxidrive):

используя TYPEPERF С некоторыми усилиями, чтобы быть быстрым и совместимым с различными языковыми настройками и так же быстро, как возможно:

MSHTA позволяет вызывать методы JavaScript, аналогичные методу JScript, показанному в #3 выше. Имейте в виду, что свойства объекта даты JavaScript, включающие значения месяца, нумеруются от 0 до 11, а не от 1 до 12. Таким образом, значение 9 означает октябрь.

вот вариант из alt.рекламного.партия.nt, который работает локально-независимо.

поместите это в текстовый файл, например getDate.cmd

чтобы получить код для работы без ошибок msg в stderr, мне пришлось добавить одинарные кавычки вокруг назначений переменных для %%a, %%b и %%c. моя локаль (PT) вызывала ошибки на одном этапе в цикле/разборе, где выполнялись такие вещи, как «set =20». Котировки дают токен (хотя и пустой) для левой стороны оператор присваивания.

недостатком является беспорядочные имена переменных локали:’ yy’,’ mm ‘и’dd’. Но эй, какая разница!

CMD/BAT: работа с датой и временем в командной строке

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщения 1

1 Тема от Rumata 2010-01-21 22:48:50 (изменено: Rumata, 2010-01-22 19:42:40)

  • Rumata
  • Разработчик
  • Неактивен
  • Рейтинг : [ 31 | 0 ]

    Тема: CMD/BAT: работа с датой и временем в командной строке

    Эта тема родилась почти два года назад. Нам потребовалось самыми простыми средствами ТОЛЬКО командной строки получит временной слепок в формате ГГГГММДД_ччммсс (Год, Месяц, День, часы, минуты, секунды). В дальнейшем этот слепок предполагалось использовать в именах файлов для предотвращения путаницы в создаваемых однотипных файлах. Решение было найдено и использовалось некоторое время (решение опубликовано в виде статьи Подстановка текущих даты/времени в имя файла стандартными средствами командной строки Windows).
    Впоследствии обнаружилась незавершенность алгоритма — ночное и утреннее время (промежуток между 00:00 и 10:00) в зависимости от региональных настроек может содержать ведущий пробел вместо нуля (» 9:59″ вместо «09:59»). Для исправления этой ошибки была добавлена одна строка, и алгоритм заработал вновь.
    Примерно через год возникла необходимость вернуться к этому алгоритму, и был найден более простой вариант решения проблемы — подстановки даты и времени в имя файла. Появилась заметка Дата и время в имени файла (подстановка стандартными средствами командной строки Windows). В заметке описывается суть нового алгоритма, использующего особенности метода раскрытия переменных и свойства конструкции for /f. Рассмотрим каждый из них в отдельности. В конце будет показан еще один пример использования этой методики.

    Недостатки
    Вначале хотелось бы сказать о существующих недостатках. Есть одна особенность, о которой следует помнить. Этот скрипт хорошо работает даже с таким форматом даты как М/Д/ГГГГ, например для даты 14 февраля 2010. Однако это никогда не проверялось, например, для дат неделей раньше. Об этом сказано в записи от 14 февраля 2009 на странице архива Роба ван дер Вуда. Однако в большинстве случаев это работает.

    Раскрытие переменных
    Конструкции вида %VAR:str1=str2% указывают интерпретатору раскрыть значение переменной VAR и произвести замену всех подстрок str1 на str2 во всей строке. Это хорошая особенность, которой мы можем воспользоваться — переменная %TIME% может содержать ненужный нам ведущий пробел и нам необходимо заменить его нулем

    В данном случае str1 — это пробел, str2 — символ «ноль». Поэтому между двоеточием и знаком равенства один пробел. На всякий случай аналогичное проделываем и с переменной DATE.

    Конструкция for /f
    В зависимости от региональных настроек порядок элементов даты может варьироваться. Например, у нас принят формат ДД.ММ.ГГГГ, в некоторых англоговорящих странах ММ.ДД.ГГГГ. Для решения нашей проблемы надо выбрать каждую часть времени и отсортировать в нужном нам порядке — разбить строку на части по разделителям (точка «.», пробел » «, слеш «/», запятая «,», тире «-«, двоеточие «:»), полученные части записать в переменные цикла и сохранить в нужном нам порядке

    Рассмотрим, как же эта конструкция поможет нам. for /f рассматривает входной поток (текстовая строка. файл на диске или вывод команды). В данном случае это строка, например дата и время создания этой темы 21.01.2010 21:48:50,23 (согласно настроек на моей системе). Эта строка анализируется и разбивается разделителями на отдельные фрагменты (токены).
    Обратите внимание на пробел в списке разделителей — «/-. «. Так как входная строка содержит только целочисленную информацию, разделенную разделителями, то в строке всего 7 токенов.
    Для того чтобы все токены были переданы внутрь цикла указываем количество и список токенов — «tokens=1-7», то есть все семь — с первого по седьмой. Чтобы все семь токенов попали в цикл на обработку будут выделено семь переменных цикла. В заголовке цикла указано имя первой переменной %%a. Следующие переменные получат последовательно имена %%b, %%c, %%d, %%e, %%f, %%g. В первую переменную %%a попадет первый токен, во вторую, %%b — второй токен, и т.д.
    И так. В этом примере порядок следующий (работает на моем компьютере, у вас может быть другой)
    — %%a — день
    — %%b — месяц
    — %%c — год
    — %%d — часы
    — %%e — минуты
    — %%f — секунды
    — %%g — сотые
    Так как время 21.01.2010 21:48:50,23 из формата ДД.ММ.ГГГГ чч:мм:сс,сд надо перевести в формат ГГГГММДД_ччмм, надо взять значения переменных из списка выше в следующем порядке
    — %%c — год
    — %%b — месяц
    — %%a — день
    — %%d — часы
    — %%e — минуты

    В результате получим строку вида 20100121_2148.

    Этот скрипт не универсальный, он системно-зависимый: порядок отдельных частей даты и времени зависит от текущих установок на компьютере (национальные, пользовательские настройки).

    Aнализ текущего времени
    На форуме был задан вопрос как проанализировать текущее время:

    . нужно в процессе выполнения скрипта проанализировать текущее время, если текущее время меньше 15:00 , то пропускаем (по goto) определённую строку (блок).

    Используем раскрытие переменных с заменой подстроки — берем значение переменной TIME, производим замену пробела нулем и полученную строку сравниваем с заданной строкой времени. Так как сравнение производится лексикографически (википедия), то алгоритм выполнится корректно

    Читайте также:  Посмотреть версию bios linux
Оцените статью