bat文件中的日期格式

时间:2016-09-26 06:48:06

标签: batch-file

我的批处理脚本的一部分涉及在批处理文件中创建时间戳。 我使用以下代码以yyyy-mm-dd格式获取日期 set mydate=!date:~10,4!-!date:~4,2!-!date:~7,2!

当我的电脑上的设置为mm-dd-yy且date命令返回时 The current date is: Mon 09/26/2016以及我的上述命令将其转换为2016-09-26

但问题是当我在另一台具有dd-mm-yy格式的机器上运行我的脚本时,date命令会返回这个:

The current date is: 26-Sep-16我上面的命令给了我:-ep-16

无论计算机上的日期格式设置如何,我怎样才能始终以所需格式(yyy-mm-dd)获取日期?

1 个答案:

答案 0 :(得分:1)

命令wmic os get localdatetime将提供类似

的输出
  

LocalDateTime
  20160926085318.630000 + 120

您可以将输出放在var中或直接将其拆分为多个变量。

对于单行输出,将开关/value添加到上面的命令。输出将如下所示:

  

LocalDateTime = 20160926085649.867000 + 120

为了展示功能理念背后的概念,我编写了这个:

@echo off
setlocal EnableDelayedExpansion
REM change this to what you would do usually in your program:
for /l %%m in (1,1,5) do (
timeout /t 1
call:getNewTimestamp
echo !timestamp!
)
pause
goto:eof

:getNewTimestamp
for /f "delims== tokens=1*" %%g in ('wmic os get localdatetime /value') do (
if ".%%g"==".LocalDateTime" (
REM Change this to the usual way to get your timestamp:
set timestamp=%%h
)
)
Goto:eof

因此,只要您需要当前时间戳,就需要call :getNewTimeStamp。此函数会将!timestamp!设置为所需的值。然后,您可以像往常一样在程序的主要部分中使用该值 所以我的示例有一个循环,它经历了5次,每次等待一秒,然后调用getNewTimestamp,然后回显!timestamp!的值。
function这个词在这里可能会产生误导。它从同一个脚本中更新脚本变量,最后的goto:eofcall <functionName> - 命令一起更新,将导致更新符合“函数脚本”的变量。