Pek*_*kka 23 windows windows-server-2008 localization batch
该%DATE%
和%TIME%
环境变量提供命令行和批处理文件内的当前日期和时间在Windows机器上。
可悲的是,这些值是本地化的!这意味着,比如说,在德国机器上,你会得到
26.1.2011
Run Code Online (Sandbox Code Playgroud)
代替
2011-26-01
Run Code Online (Sandbox Code Playgroud)
如果你想在文件名中使用这个变量,这会搞砸排序。
有没有什么简单的方法可以YYYY-MM-DD
在 Windows 批处理文件中获取语言环境未知的日期字符串?
目前,我正在使用这种相当笨拙的解决方法:
for /f "tokens=1,2,3,4 delims=. " %%i in ('date /t') do set date=%%k-%%j-%%i
echo %date%
Run Code Online (Sandbox Code Playgroud)
但现在这是德语语言环境中具体-显然,一个完全独立的解决办法是多漂亮。
有问题的操作系统是 Server 2008。如果可能的话,我宁愿不使用第三方工具。
Joe*_*oey 25
有一些尝试(Rob van der Woude有一些尝试),但没有任何地方真正适用于所有语言环境。但是,您可以通过以下方式以易于解析的格式获取当前时间
wmic os get LocalDateTime
Run Code Online (Sandbox Code Playgroud)
以下内容至少可以让您获得 UTC:
@echo off
rem Get the time from WMI - at least that's a format we can work with
set X=
for /f "skip=1 delims=" %%x in ('wmic os get localdatetime') do if not defined X set X=%%x
echo.%X%
rem dissect into parts
set DATE.YEAR=%X:~0,4%
set DATE.MONTH=%X:~4,2%
set DATE.DAY=%X:~6,2%
set DATE.HOUR=%X:~8,2%
set DATE.MINUTE=%X:~10,2%
set DATE.SECOND=%X:~12,2%
set DATE.FRACTIONS=%X:~15,6%
set DATE.OFFSET=%X:~21,4%
echo %DATE.YEAR%-%DATE.MONTH%-%DATE.DAY% %DATE.HOUR%:%DATE.MINUTE%:%DATE.SECOND%.%DATE.FRACTIONS%
Run Code Online (Sandbox Code Playgroud)
但是,您可能需要考虑时区偏移量(除非它用于日志文件,否则我将始终使用 UTC)但这一点计算都做不到 :-)
小智 14
这是我一直在使用的两行代码,无论 Windows 版本或本地时间设置如何,它似乎都可以工作:
FOR /f %%a in ('WMIC OS GET LocalDateTime ^| find "."') DO set DTS=%%a
set CUR_DATE=%DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2%
Run Code Online (Sandbox Code Playgroud)
这将以以下 ISO 标准格式设置一个名为 %CUR_DATE% 的变量:
yyyy-mm-dd
Run Code Online (Sandbox Code Playgroud)
我试着用&& 把它做成一行,但似乎不行,所以我求助于两行版本。希望这可以帮助。
归档时间: |
|
查看次数: |
35407 次 |
最近记录: |