Разработайте пакетный файл для установки параметров даты и времени в командной строке

Обновлено: 07.07.2024

В пакетном файле у меня есть местоположение приложения и моя информация для входа.
И дополнительно мне нужны эти две даты. Как я могу получить даты через пакетный файл?

2 ответа 2

В системе Microsoft Windows текущую дату можно получить с помощью команды date /t (параметр /t запрещает команде запрашивать изменение даты) или с помощью команды echo %date% для отображения содержимого переменной среды даты. Однако оба они отображают дату в форме DDD mm/dd/yyyy , если система использует формат даты США для отображения дат, где DDD — это день недели, представленный 3-символьной аббревиатурой, например, «Чт. ", mm — это двузначное представление месяца, например, "08" – август, dd – день, а yyyy – год.

Вы можете изменить формат представления даты, хранящейся в переменной среды %date%. Например, если вам нужна дата в форме ггггммдд, вы можете использовать команду, подобную приведенной ниже, где переменная ГГГГММДД установлена ​​для хранения переформатированной даты; имя переменной может быть любым, например, mydate и т. д.

Аргументы подстроки для извлечения элементов строки даты имеют формат %variable:~startposition,numberofchars% , поэтому, если "T" в четверг в строке "Thu 08/06/2015" находится в позиции 0 , 10-й символ — это «2» 2015 года, и я хочу 4 символа, т. е. «2015», поэтому %DATE:10,4% даст мне эти символы. Или вы также можете думать о первом числе как о количестве символов, которые нужно пропустить, т. е. %variable:~num_chars_to_skip,numberofchars% . Затем я могу добавить %DATE:~4,2%, чтобы получить «08» для месяца, за которым следует %DATE:~7,2%, чтобы извлечь день, т. е. «06», если дата представлена ​​6 августа 2015 г. переменная %DATE% как «Четверг, 06.08.2015». Справочник с дополнительными ссылками

Если ваш пакетный файл может использоваться в системах в других странах, вам может потребоваться настроить другой стиль отображения даты, отличный от месяца/дня/года, если вы переформатируете дату, а не просто отображаете ее в любой формат является форматом по умолчанию для системы. Если вы выполните команду reg query, вы увидите формат по умолчанию для системы. Например:

В приведенном выше примере я вижу, что система использует формат месяц/день/год. Настройку страны можно увидеть с помощью reg-запроса «HKCU\Control Panel\International» /v sCountry , но это может быть не то, о чем вам нужно беспокоиться, если вы знаете, что системы являются локальными и используют представление даты по умолчанию.

Чтобы получить вчерашнюю дату, есть несколько сообщений о переполнении стека, в том числе упомянутое Дэвидом Постиллом:


Автор Rahul, 21 октября 2017 г. Чтение: 2 минуты Обновлено: 25 августа 2021 г.

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

Давайте рассмотрим руководство и разберемся, как это сделать.

Получить дату и время в пакетном скрипте

Windows использует дату в формате, например, четверг 02.11.2017. Поэтому используйте следующие команды, чтобы извлечь дату в формате ГГГГ, месяц в формате ММ и дату в формате ДД и сохранить в переменных CUR_YYYY, CUR_MM и CUR_DD соответственно.

Далее необходимо проанализировать время, которое доступно в формате 15:41:36,39 (часы, минуты, секунды и микросекунды). Теперь извлеките часы, минуты, секунды и микросекунды и сохраните их в переменных.

Теперь у вас есть переменные с текущей датой и временем в переменных. Вы можете использовать и создавать любое имя файла в соответствии с вашими требованиями, например:

Если ваша текущая дата и время — 02 ноября 2017 г., 15:41:36, то в приведенном выше примере будет создан файл в текущем каталоге с именем «access_20171102-154136.log».

Пример пакетного сценария с датой и временем

Полный пакетный сценарий Windows будет выглядеть так, как показано ниже. Чтобы проверить это, создайте файл test.bat со следующим содержимым. Сохраните файл и выполните скрипт.

Откройте терминал и выполните указанный выше пакетный скрипт.


< /p>

Вы обнаружите, что каталог создан с именем «20171102-154136». Кроме того, в текущем каталоге создается файл с именем «access_20171102-154136.log» (имя файла будет соответствовать текущей дате и времени и изменится во время тестирования)

Заключение

В этом руководстве вы научились создавать каталоги или имена файлов на основе текущей даты и времени в системе Windows.

В пакетном сценарии Windows (Windows XP) мне нужно отформатировать текущую дату и время для последующего использования в именах файлов и т. д.

Это похоже на вопрос Stack Overflow Как добавить дату в пакетные файлы, но также со временем.

У меня есть это:

Можно ли разрешить однозначный час в %TIME%, чтобы получить следующее?

Вы можете заменить пустые пробелы в переменной datetimef и поставить вместо них 0. В вашем примере: SET datetimef=%datetimef: =0%

37 ответов 37

Я закончил с этим скриптом:

:: На WIN2008R2, например. Мне нужно было сделать ваш «установить месяц =% дата: ~ 3,2%», как показано ниже :: иначе 00 отображается для МЕСЯЦА

К вашему сведению, в Windows Server 2003 и Windows 7 этот скрипт дал мне "201200Mo_085806" (правильный год и время).

Примечание для тех, кто придет сюда из Google (таких как я): это зависит от локали, поэтому для работы в Windows, отличной от английского, могут потребоваться настройки!

В Windows Server 2003 и Windows 7 это дало мне правильную строку. Гораздо элегантнее, чем то, что я построил в прошлом, так что спасибо!

Вот что мне дает Windows 7 с русской локалью. Текущее время 2013-05-03T02:22:51, но скрипт печатает: "2013-5.-01_02_22_51"

Я обычно делаю это так, когда мне нужна строка даты/времени:

Это для немецкого формата даты/времени ( дд.мм.гггг чч:мм:сс ). В основном я объединяю подстроки и, наконец, заменяю все пробелы нулями.

Результирующая строка имеет формат: гггг_мм_дд__чч_мм_сс

Краткое объяснение того, как работают подстроки:

Поэтому, чтобы получить только год из даты, например "29.03.2018", используйте:

Лучший ответ, так как он объясняет, как напечатать переменные вместо того, чтобы принудительно указывать некоторую подстроку, которая может быть разной для многих людей. Я всегда сначала запускал echo %date%_%time%, чтобы посмотреть, что печатают только переменные, а затем решить, какие подстроки я хочу сохранить.

@АндреасЛ. Для получения информации о часовом поясе в командной строке используются другие инструменты. Вы можете использовать системную информацию, например, так: for /F "tokens=2 delims=^(: " %i in ('systeminfo^|find "Zeit"') установите "tz=%i" немецкая Windows). Обратите внимание, что если вы хотите использовать его в пакетном файле, вам нужно удвоить %s .

Если PowerShell установлен, вы можете легко и надежно получить дату/время в любом формате, например:

Конечно, в настоящее время PowerShell устанавливается всегда, но в Windows XP вы, вероятно, захотите использовать этот метод только в том случае, если ваш пакетный сценарий используется в известной среде, где вы знаете, что PS доступен (или проверьте свой пакетный файл, если PowerShell доступен. )

Сегодня я столкнулся с этой проблемой и решил ее с помощью:

Он заменяет пробелы на 0 и фактически дополняет часы нулями.

После некоторых быстрых поисков я не выяснил, требуются ли для этого расширения команд (по-прежнему работает с SETLOCAL DISABLEEXTENSIONS).

@TomaszGandor Это работает для меня: echo %TIME: =:%, но если это не так, попробуйте экранировать : с помощью ^, например echo %TIME: =^:% (что также работает для меня).

+1 для простоты. Двоеточия недопустимы в именах файлов. set theTime=%Time::=% удаляет их. Можете ли вы заменить пробел на 0, удалить двоеточия и усечь до 6 символов (таким образом, удалив десятичную часть) в одном выражении? Ничего страшного, если это займет две или три строки. Мне просто интересно.

Как уже отмечалось, синтаксический анализ даты и времени полезен только в том случае, если известен формат, используемый текущим пользователем (например, ММ/дд/гг или дд-мм-гггг, и это только два примера). Это можно определить, но к тому времени, когда вы сделаете все выделения и синтаксический анализ, вы все равно столкнетесь с ситуацией, когда используется неожиданный формат, и потребуются дополнительные настройки.

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

Есть также пакетные трюки, использующие часы CMOS довольно сырым способом, но это слишком близко к оголенным проводам для большинства людей, а также не всегда является предпочтительным местом для получения даты/времени.

Ниже приведено решение, позволяющее избежать описанных выше проблем. Да, это создает некоторые другие проблемы, но для моих целей это самое простое, понятное и переносимое решение для создания метки даты в файлах .bat для современных систем Windows. Это всего лишь пример, но я думаю, вы увидите, как изменять другие форматы даты и/или времени и т. д.

В этом руководстве мы рассмотрим, как получить и установить системную дату. Пакетный файл содержит ряд инструкций DOS (дисковая операционная система). Это позволяет инициировать выполнение команд, найденных в этом файле.

Пакетный файл для получения системной даты

Следующий пример получает системную дату:

Пакетный файл для установки системной даты

В следующем примере системная дата устанавливается на 15-02-2022 с помощью команды date:

Вам также может понравиться

Как включить темный режим в Microsoft Edge

Как включить темный режим в Microsoft Edge

Как объединить переменные в пакетном файле Windows

Как объединить переменные в пакетном файле Windows

Как отключить функцию сна в меню

Как отключить режим сна в меню «Пуск» Windows 10

Оставить ответ Отменить ответ

Последние сообщения

Что такое Web Worker в JavaScript

Что такое Web Worker в JavaScript?

В этом руководстве мы рассмотрим, что такое Web Worker в JavaScript? Web Worker позволяет нам

Как отсортировать массив строк в JavaScript?

О нас

Логотип


Научитесь программировать на разных языках программирования, таких как PHP, Java, Python, C/C++ и т. д., а также на таких фреймворках, как Laravel, Django, Spring и т. д., с помощью наших простых руководств, примеров, упражнений, mcq. и ссылки.

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