Скрипт изменения даты и времени windows

Обновлено: 04.07.2024

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

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

у меня это до сих пор:

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

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

:: на WIN2008R2, например, мне нужно было сделать ваш " установить месяц=%дата:

3,2%", как показано ниже :: в противном случае 00 появляется в течение месяца

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

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

вы можете разумно спросить: зачем вообще использовать пакетный файл, если вы можно использовать PowerShell для получения даты / времени, но я думаю, что некоторые очевидные причины: (a) вы не так хорошо знакомы с PowerShell и по-прежнему предпочитаете делать большинство вещей старомодным способом с пакетными файлами или (b) вы обновляете старый скрипт и не хотите переносить все это в PS.

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

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

после некоторого быстрого поиска я не узнал, требуются ли расширения команд (все еще работал с SETLOCAL DISABLEEXTENSIONS).

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

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

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

таким образом, чтобы получить только год от даты, как "29.03.2018" использовать:

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

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

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

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

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

по крайней мере, это может быть вдохновляющим.

Если вам точно не нужен этот формат:

тогда вы можете использовать следующее 3 строки кода который использует %date% и %time%:

Примечание: символы / и : удаляются и символ . и Пробел заменяется знаком подчеркивания.

пример вывода (взято в среду 8/5/15 в 12: 49 вечера с 50 секундами и 93 миллисекундами):

на offset:length форматирование поддерживается с SET команда в Windows не позволит вам заполнить 0 как вы, кажется, заинтересованы.

однако вы можете закодировать пакетный скрипт, чтобы проверить, что час меньше 10 и
pad соответственно с другим echo строку.

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

это довольно просто в unix bash (доступно с Cygwin на Windows), чтобы просто сказать,

date

03.08.2021

directory

PowerShell, Windows 10, Windows Server 2019

comments

комментариев 9

Часовой пояс (Time zone), наряду с временем и датой, это один из критический параметров компьютера. Для корректной работы Windows/прикладных программ и правильного отображения времени в системе, часовой пояс должен быть установлен в соответствии с географическим расположением компьютера. В этой статье мы рассмотрим, как изменить часовой пояс в Windows из графического интерфейса, командной строки, консоли PowerShell и с помощью групповых политик.

В Windows 10 и Windows Server 2019/2016 для настройки времени и часового пояса используется новое окно в приложении (Параметры/Settings). Вы можете установить часовой пояс из графического интерфейса, щелкнув правой кнопкой по значку часов в системном трее и выбрав пункт Adjust date/time (Настройка времени и даты). По умолчанию Windows пытается автоматически выбрать часовой пояс (включена опция Set time zone automatically/Автоматически устанавливать часовой пояс). Вы можете отключить эту опцию и задать нужный часовой пояс вручную, выбрав его в выпадающем списке.

параметры часового пояса windows 10 в приложении параметрыchasovogo-poyasa

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

windows10 выбор часового пояса

Назначаем права на изменение часового пояса в Windows

По-умолчанию смена часового пояса в Windows 10 не требует от пользователя наличия прав администратора (в отличии от смены времени/даты). Вы можете запретить пользователям менять часовой пояс с помощью локальной политики безопасности (Local Security Settings — secpol.msc ). Интересующая нас настройка находится в разделе Security Settings -> Local Policy -> User Rights Assignment (Параметры безопасности -> Локальные политики -> Назначение прав пользователя). Политика называется Change the time zone (Изменение часового пояса). По умолчанию изменить часовой пояс в Windows 10 может сама система, администраторы и все пользователи. Чтобы запретить простым пользователям самим менять часовой пояс, необходимо удалить Users из списка учетных записей в этой политике.

Изменение часового пояса - политика

В Windows Server право на изменение часового пояса есть только у Local Service и администраторов.

В Hyper-V Server и в Windows Server Core вы можете задать часовой пояс с помощью встроенной утилиты sconfig.

Утилита TZUtil: изменить часовой пояса из командной строки Windows 10

Для смены часового пояса в Windows 11/10/8.1, Windows Server 2019/2016/2012 R2/ используется специальная утилита командной строки tzutil.exe (Windows Time Zone Utility), впервые появившаяся в Windows 7. Исполняемый файл утилиты хранится в каталоге %WINDIR%\System32 .

Разберемся с возможностями и особенностями использования утилиты TZUtil.

Откройте командную строку ( cmd.exe ). Чтобы узнать текущий часовой пояс и его идентификатор (TimeZoneID), выполните команду:

В данном примере Russian Standard Time это идентификатор текущего часового пояса:

tzutil /g узнать текущий часовой пояс компьютера

Выведите список всех часовых поясов с их названием и идентификаторами:

tzutil /l список всех часовых поясов

Если вы хотите быстро найти вывести все доступные часовые пояса, например, со сдвигом UTC +2, выполните команду:

tzutil /l | find /I "utc+02"

поиск временных зон по UTC смещению

Чтобы изменить текущий часовой пояс (UTC+03:00) Москва, Санкт-Петербург, Волгоград – (Russian Standard Time) на (UTC+04:00) Ижевск, Самара (Russia Time Zone 3). Для этого нужно указать идентификатор часового пояса:

tzutil /s "Russia Time Zone 3"

tzutil /s задать часовой пояс Russia Time Zone

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

reg query HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

настройки часового пояса в реестре

Чтобы отключить переход на летнее время для конкретного пояса, нужно указать идентификатор часового пояса с суффиксом _dstoff, например

tzutil /s “Pacific Standard Time_dstoff”

Эта команда изменит часовой пояс компьютера и отключите сезонный перевод часов.

Вы можете вывести полную информацию о часовом поясе и настройках сезонного перевод часов так:

Часовой пояс: Текущий:TIME_ZONE_ID_UNKNOWN Сдвиг: -180мин (UTC=LocalTime+Bias)
[Зимнее время:"RTZ 2 (зима)" Сдвиг:0мин Дата:(не указано)]
[Летнее время:"RTZ 2 (лето)" Сдвиг:-60мин Дата:(не указано)]

w32tm /tz

В Windows XP и Windows Server 2003 для смены часового пояса из командной строки нужно было использовать такие команды:

RunDLL32.exe shell32.dll,Control_RunDLL timedate.cpl,,/Z Russian Standard Time

Control.exe TIMEDATE.CPL,,/Z Russian Standard Time

Управление часовым поясом в Windows из PowerShell

Получить настройки текущего часового пояса можно и в консоли PowerShell. Используйте команду:

powershell Get-TimeZone

В PowerShell вы можете просмотреть все возможные часовые пояса, доступные в Windows:

[System.TimeZoneInfo]::GetSystemTimeZones()
Или
Get-TimeZone -ListAvailable

Get-TimeZone -ListAvailable

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

Get-TimeZone -ListAvailable | Where-Object

Get-TimeZone -ListAvailable | Where-Object

фильтр для часовых поясов в powershell

Можно вывести все часовые пояса в алфавитном порядке:

Get-TimeZone -ListAvailable | Select Id | Sort Id

Чтобы изменить текущий часовой пояс из PowerShell, выполните команду

Set-TimeZone -Name "Astrakhan Standard Time"

В этих примерах используется версия PowerShell 5.1, но они также работают и в более новых версиях.

Настройка часового пояса через GPO

Для централизованной настройки часового пояса на компьютерах в домене Active Directory вы можете использовать групповые политики. Готовой политики для настройки часового пояса в GPO нет. Чаще всего используются следующие два варианта настройки часового пояса через GPO: с помощью logon скрипта GPO и с помощью импорта настроек часового пояса в реестр.

Для задания часового пояса через логон скрипт GPO, можете использовать простейший PowerShell скрипт (подходит для всех версий Windows, вплоть до Windows XP и Windows Server 2003):

$tmZone = "Russian Standard Time"
$WinOSVerReg = Get-Item "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
$WinOSVer = $WinOSVerReg.GetValue("CurrentVersion")
if ($WinOSVer -GE 6)tzutil.exe /s $tmZone
> Else $param = "/c Start `"Change tmZone`" /MIN %WINDIR%\System32\Control.exe TIMEDATE.CPL,,/Z "
$param += $tmZone
$proc = [System.Diagnostics.Process]::Start( "CMD.exe", $param )
>

Другой способ настроек времени заключается в импорте содержимого ветки HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation с эталонного компьютера с настроенным временем на другие компьютеры через GPO. Процедура импорта ветки реестра через Group Policy Preferences описана в этой статье.

Выберите эту ветку целиком с помощью Registry Browser. В результате все настройки временной зоны будут импортированы в раздел редактора GPO (Computer Configuration -> Preferences -> Windows Settings -> Registry).

задать часовой пояс на компьютерах в домене ad через gpo

Если вы хотите использовать разные настройки временных зон для разных сайтов Acrive Directory, воспользуйтесь GPP Item Level Targeting. Привяжите настройки часового пояса к нужному сайту.

групповая политика для настройки часового пояса в зависимости от сайта active directoryad

Ошибка при изменении часового пояса в Windows Server 2019

В Windows Server 2019 RTM есть неприятный баг с настройкой часового пояса через графический интерфейс. Если вы попытаетесь изменить часовой пояс из панели Settings появится ошибка:

Не удается задать часовой пояс в Windows Server 2019 Продолжение невозможно. У вас нет разрешения на выполнение этой задачи

В первую очередь проверьте, что вы вошли под учетной записью с правами администратора, а в настройках локальной политики безопасности Change the time zone присутствует группа Administrators.

изменить часовой пояс ограничение в локальной политике

В качестве обходного решения в этом случае придется изменить часовой пояс из командной строки:

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

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

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

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

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

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

sistemnyx-daty-i-vremeni-1

sistemnyx-daty-i-vremeni-2

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

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

sistemnyx-daty-i-vremeni-3

sistemnyx-daty-i-vremeni-4

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

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

sistemnyx-daty-i-vremeni-5

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

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

Часовой пояс или временная зона (Time zone) является одним из важных системных параметров, необходимых для корректной работы операционной системы. Неправильно установленный часовой пояс может привести к проблемам в работе программ и самой ОС, поэтому его значение должно строго соответствовать географическому расположению компьютера.

Изменять часовой пояс приходится нечасто, как правило после установки ОС в этом нет необходимости. Но иногда бывают экстренные ситуации, например неожиданная отмена перехода на летнее\зимнее время и, как следствие, массовая смена часовых поясов. В этом случае нас может спасти командная строка. В Windows есть пара способов изменения часового пояса из командной строки, которые мы и рассмотрим.

Утилита TZUtil

Утилита командной строки TZUtil (Windows Time Zone Utility) специально предназначена для изменения часового пояса в операционных системах Windows. Впервые она появилась в Windows Vista\Server 2008 в качестве отдельного обновления, а начиная с Windows 7\Server 2008 R2 входит в состав операционной системы. Исполняемый файл утилиты tzutil.exe хранится в каталоге %WINDIR%\System32.

Синтаксис у tzutil довольно простой. Для вывода справки воспользуемся командой:

tzutil help

Просмотреть текущий часовой пояс можно командой:

tzutil вывод текущей временной зоны

А для вывода списка всех часовых поясов надо выполнить:

tzutil просмотр всех временных зон

tzutil /s "Russia Time Zone 3"

Примечание. Для отключения перехода на летнее время при установке часового пояса необходимо к названию часового пояса добавлять суффикс _dstoff, например:

tzutil /s “Pacific Standard Time_dstoff”

В связи с отменой перехода на летнее время это не очень актуально, но кто знает 🙂

tzutil изменение временной зоны

Кстати, утилита w32tm с ключом /tz также умеет показывать текущий часовой пояс:

просмотр текущей временной зоны с помощью w32tm

PowerShell

Начиная с PowerShell версии 5.1 управлять часовыми поясами можно с помощью специальных командлетов Get-TimeZone и Set-TimeZone. Первый предназначен для просмотра информации о часовых поясах, второй соответственно для их изменения. Для того, чтобы посмотреть текущий пояс, надо просто выполнить команду:

просмотр текущей временной зоны с помощью PowerShell

А так можно вывести весь список:

Вывод всех временных зон с помощью PowerShell

Теперь вернем обратно часовой пояс (UTC+03:00) Москва, Санкт-Петербург, Волгоград (Russian Standard Time):

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