我的批处理脚本的一部分涉及在批处理文件中创建时间戳。
我使用以下代码以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)获取日期?
答案 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:eof
与call <functionName>
- 命令一起更新,将导致更新符合“函数脚本”的变量。