如果我在Windows 7(cmd.exe)的命令行上运行脚本timestamp.cmd,代码如下:
@echo off
echo generating timestamp file >>timestamp.txt
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set mydate=%%a%%b%%c)
for /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
echo %mydate% > timestamp.txt
echo %mytime%00 >> timestamp.txt
然后我得到输出:
31012017
084300
但如果我从服务中将其作为命令运行,则输出为:
Tue0131
0941 AM00
首先,我不明白为什么我会得到这样的输出。其次,我该如何解决?
答案 0 :(得分:3)
为什么?
日期/时间格式绑定到用户配置。同一系统中的每个用户帐户可以具有不同的配置。您的帐户和系统服务帐户的配置不同。
如何?
使用其他方法检索日期,选择始终以已知格式提供日期/时间格式的来源。
使用robocopy
@echo off
setlocal enableextensions disabledelayedexpansion
set "myDate="
for /f "tokens=1-6 delims=:/ " %%a in ('
robocopy "|" . /njh
') do if not defined myDate (
set "myDate=%%c%%b%%a"
set "myTime=%%d%%e%%f"
)
>"timestamp.txt" (
echo %myDate%
echo %myTime%
)
使用wmic
@echo off
setlocal enableextensions disabledelayedexpansion
for /f "tokens=2 delims==." %%a in ('
wmic os get localdatetime /format:list
') do set "myDate=%%a"
set "myTime=%myDate:~-6%"
set "myDate=%myDate:~6,2%%myDate:~4,2%%myDate:~0,4%"
>"timestamp.txt" (
echo %myDate%
echo %myTime%
)
或......
您应该查看this answer并选择更适合您需求的方法。