Как сделать часы в cmd

Добавил пользователь Дмитрий К.
Обновлено: 10.09.2024

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

Я действительно не против формата даты, в идеале это будет гггг-мм-дд, но все, что угодно, просто отлично.

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

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

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

Создаете автоматическое резервное копирование для вашего кода? Повезло тебе! Мы тоже должны это сделать :)

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

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

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

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

date.exe является частью бесплатных инструментов GNU, которые не требуют установки.

ПРИМЕЧАНИЕ. Копирование date.exe в любой каталог в пути поиска может привести к сбою других сценариев, использующих встроенную date команду Windows .

Намного лучше, чем странно более популярное решение, описанное выше, но мне пришлось добавить / t, чтобы избежать приглашения в Windows 8.1

date.exe Кажется, встроенная Windows 8.1 зависит от локали. Она возвращает дату в формате dd / MM / yyyy в моей системе, если бы она не зависела от локали, я бы ожидала MM / dd / yyyy или yyyy-MM-dd Я не думаю, что этот ответ говорит о встроенном date.exe, а о какой-то сторонней версии.

Обратите внимание, что date.exe (часть UnxUtils) отличается от встроенной команды date. Поэтому, если вам нужно добавить / t, команда windows date будет выполнена. Если что-то вроде date.exe + "% Y-% m-% d" работает, вы правильно установили UnxUtils. :-)

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

MAKECAB - будет работать в КАЖДОЙ системе Windows (быстро, но создает небольшой временный файл) (скрипт foxidrive):

ROBOCOPY - это не встроенная команда для Windows XP и Windows Server 2003, но ее можно скачать с сайта Microsoft . Но встроен во все, от Windows Vista и выше:

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

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

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

Чтобы использовать его из командного файла:

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

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

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

для powershell C: \> for / f %% i in ('powershell get-date -format ""') установите settimetime = %% i C: \> echo% datetime%

makecab : это работает путем создания файла с именем ~.rpt и поиска string внутри него, начиная с makecab строки, подобной MakeCAB Report: Tue Sep 02 22:15:57 2014 . для меня эта команда не локализована, она не зависит от локали. Этот трюк полагается на это. Будем надеяться, что этого никогда не будет, иначе остерегайтесь!

Что, нет mshta гибрида? :) Не возражаете, если я отредактирую ваш ответ и добавлю один? Кажется, это лучшая коллекция эзотерических решений, и кажется, что она mshta здесь.

Принятое решение не сработает для меня, что бы я ни пытался. Несколько из этих решений работали для меня. (Пакет и Powershell).

Вот вариант из alt.msdos.batch.nt, который работает локально независимо.

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

Недостатком являются грязные имена переменных локали: 'yy', 'mm' и 'dd'. Но эй, кого это волнует!

См. Также улучшения Jeroen , необходимые, поскольку не все локали используют строки dd , mm а yy в выводе echo:^|date .

не работает на всех языках. (По-немецки date дает Geben Sie das neue Datum ein: (TT-MM-JJ) , где JJ ломает твой сценарий (ожидает YY ))

Я использую это (опять же не зависит от региона (Великобритания))

См. Переменные среды Cmd.exe с двоеточием и тильдой об этой малоизвестной, но очень эффективной методике. (Указатель на авторитетную ссылку Microsoft был бы признателен.)

Первые четыре строки этого кода предоставят вам надежные переменные YY DD MM YYYY HH Min Sec в Windows XP Professional и выше.

Отлично, это лучшее решение для меня, так как вызов PS приведет к тому, что текст cmd будет выглядеть смешно.

К сожалению, это не защищает от региональных настроек, но делает то, что вы хотите.

Удивительный материал, который вы можете найти в Википедии .

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

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

Это на самом деле не короче, но может быть более гибким способом ( кредит ):

Обновление: теперь, когда в 2016 году я буду использовать PowerShell для этого, если у него нет убедительной обратной совместимости, особенно из-за проблем с региональными настройками с использованием date . См. @npocmaka qaru.site/questions/16145/.

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

На самом деле я не возражаю против формата даты, в идеале это будет yyyy-mm-dd, но все простое в порядке.

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

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

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

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

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

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

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

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

date.exe часть бесплатных инструментов GNU, которые не требуют установки.

ПРИМЕЧАНИЕ. Копирование date.exe в любой каталог, находящийся в пути поиска, может привести к сбою других сценариев, которые используют встроенную команду date для Windows.

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

MAKECAB - будет работать на КАЖДОЙ системе Windows (быстро, но создает небольшой временный файл) (foxidrive script):

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

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

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

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

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

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

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

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

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

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 Переименовать на дату и время

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

используя его в сценарии 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, но гибридизация не так совершенна:

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

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

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

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

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

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

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

Я хочу добавить дату и время в имя файла, а затем переместить этот файл в ближайшую папку.

Здесь я использую следующие команды для фиксации даты и времени:

Затем я использую команду копирования, как показано ниже:

Двоеточие ( : ) не допускается в имени файла. Он зарезервирован для разделения букв дисков и т. Д. В именах путей DOS. Вместо этого вы можете использовать подчеркивание ( _ ):

Обратите внимание, что до 10 часов утра в начале нет нуля. Если это важно для формата имени файла, это можно сделать следующим образом:

Это вычислит его как date_hour_min_sec и сохранит его в переменной с именем datetime. например

Вы можете использовать эту переменную datetime, непосредственно добавленную к вашему имени файла, если вы знаете, как это сделать в DOS (это просто: set filename= sampletextfor_%datetime%.txt предоставит вам sampletextfor_24042015_19_10_12.txt или любой другой файл).

Как это работает?

Команда for перебирает строку, образованную% date% % time%. % date% % time% дает значение даты и времени в cmd (системные переменные). токен указывает, какие элементы вы хотите подобрать на основе разделителя. разделитель указывает, что считать новым элементом, например, / :. здесь делименты. также "" (пробел) является разделителем (вы можете видеть, что я оставил один после /)

Надеюсь, это поможет, спасибо! :)

Ответ правильный от lurker выше, но HH нужны только первые два символа, иначе вы получите пробелы в имени файла, если час меньше двух цифр

Для любителей ММ-дд-гггг

Вот полный пакетный файл, который у меня сработал.

Созданный файл получил имя result_accnum_Fri0106_2017_14_54.txt

Хотя для создания каталога на основе метки времени у меня сработало следующее.

Читайте также: