У меня есть компьютер под управлением Windows Server 2008 R2 Standard. Он запускает несколько периодических задач, написанных Windows cmd
.
В последнее время эти пакетные задания работают неправильно, и я понимаю, что логика сценария была нарушена. Это потому, что этот сервер при отображении %date%
переменная, вы получите в stdout:
C:>echo %date%
01/09/2019
%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