如何调整Win系统环境变量“%date%”的格式

如何调整Win系统环境变量“%date%”的格式

我有一台运行 Window 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

我尝试了几个教程来修改注册表,但都没有成功。由于其他重要应用程序正在运行,因此重新启动服务器受到限制。

请针对此问题提出任何解决方案吗?

答案1

变量%date%显示当前日期短日期格式定义在地区控制面板(见短日期下拉式菜单):

区域..格式

以下脚本显示了和格式%date%的外观如何变化:MM/dd/yyyyM/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

相关内容