Batch file 从服务程序运行脚本时生成的时间戳文件不正确

Batch file 从服务程序运行脚本时生成的时间戳文件不正确,batch-file,cmd,windows-7,Batch File,Cmd,Windows 7,如果我在Windows 7(cmd.exe)上的命令行上运行脚本timestamp.cmd,代码如下: 然后我得到输出: 31012017 084300 但如果我将其作为来自服务的命令运行,则输出为: Tue0131 0941 AM00 首先,我不明白为什么我会得到这样的输出。其次,我该如何修复它?为什么 日期/时间格式绑定到用户配置。同一系统中的每个用户帐户可以有不同的配置。您的帐户和系统服务的帐户没有相同的配置 怎么做 使用其他方法检索日期,选择以已知格式一致提供日期/时间格式的源

如果我在Windows 7(cmd.exe)上的命令行上运行脚本timestamp.cmd,代码如下:

然后我得到输出:

31012017 
084300
但如果我将其作为来自服务的命令运行,则输出为:

Tue0131 
0941 AM00
首先,我不明白为什么我会得到这样的输出。其次,我该如何修复它?

为什么

日期/时间格式绑定到用户配置。同一系统中的每个用户帐户可以有不同的配置。您的帐户和系统服务的帐户没有相同的配置

怎么做

使用其他方法检索日期,选择以已知格式一致提供日期/时间格式的源

使用
robocopy

@echo关闭
setlocal enableextensions disabledelayedexpansion
设置“myDate=”
对于/f“令牌=1-6 delims=:/”%%a in('
机器人摄影术“|”/njh
“)如果未定义myDate,则不执行此操作(
设置“myDate=%%c%%b%%a”
设置“myTime=%%d%%e%%f”
)
>“timestamp.txt”(
回显%myDate%
回显%myTime%
)
使用
wmic

@echo关闭
setlocal enableextensions disabledelayedexpansion
对于/f“令牌=2个delims==。”%%a in('s)
wmic os get localdatetime/格式:列表
“)是否设置“myDate=%%a”
设置“myTime=%myDate:~-6%”
设置“myDate=%myDate:~6,2%%myDate:~4,2%%myDate:~0,4%”
>“timestamp.txt”(
回显%myDate%
回显%myTime%
)
或者


您应该查看并选择更适合您需要的方法。

日期和时间值的格式是一个可配置的项目,控制面板>语言小程序。但是这种格式只适用于您的用户帐户,而且看起来您已经更改了它,服务可能会使用服务帐户运行。考虑使用另一个帐户运行服务。或者编写一个程序,以您喜欢的方式输出,这是一个程序员的解决方案。编写
FOR
的好方法是在命令输出上循环,命令在单独的一行!
Tue0131 
0941 AM00