Назад | Перейти на главную страницу

Как настроить формат переменных среды Win System «% date%»

У меня есть компьютер под управлением Windows Server 2008 R2 Standard. Он запускает несколько периодических задач, написанных Windows cmd.

В последнее время эти пакетные задания работают неправильно, и я понимаю, что логика сценария была нарушена. Это потому, что этот сервер при отображении %date% переменная, вы получите в stdout:

  1. Фактическое значение - нарушить логику скрипта:
C:>echo %date% 
01/09/2019
  1. Выход %date% переменная должна быть такой, как показано ниже (что я ожидаю (также формат по умолчанию %date% переменная)
C:>echo %date%
Wed 01/09/2019

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

Предложите какое-либо решение этой проблемы?

В %date% переменная отображает дату в текущем короткое свидание формат, как определено в Область панель управления (см. короткое свидание выпадающее меню):

Следующий сценарий показывает, как %date% изменения внешнего вида для MM/dd/yyyy и M/d/yyyy форматы:

@ECHO OFF
SETLOCAL EnableExtensions DisableDelayedExpansion
echo(

set "regKey=HKCU\Control Panel\International"

rem retrieve current sShortDate format 
for /F "skip=2 tokens=1,2*" %%G in ('
  reg query "%regKey%" -v sShortDate
  ') do (
    set "sShortDateBkp=%%I"
    set "sShortDateTyp=%%H"  not used, always REG_SZ
)
echo current  sShortDate format=%sShortDateBkp%  %%date%%=%date%

rem change the sShortDate format to M/d/yyyy
set "sShortDateNew=M/d/yyyy"
>NUL REG ADD "%regKey%" /v sShortDate /t REG_SZ /d "%sShortDateNew%" /f
echo changed  sShortDate format=%sShortDateNew%    %%date%%=%date%

rem change the sShortDate format back to its original value 
>NUL REG ADD "%regKey%" /v sShortDate /t REG_SZ /d "%sShortDateBkp%" /f
echo original sShortDate format=%sShortDateBkp%  %%date%%=%date%

Вывод:

==> D:\bat\SF\948175.bat

current  sShortDate format=MM/dd/yyyy  %date%=02/07/2019
changed  sShortDate format=M/d/yyyy    %date%=Thu 02/07/2019
original sShortDate format=MM/dd/yyyy  %date%=02/07/2019