bat脚本中timeStamp解决方案
之前做了个工具包,用了timeStamp做文件名。
一般来说最简单的代码类似于:
set timeStamp=%date:/=-%_%time% echo %timeStamp%
>2018-01-23_11:23:44.43
但这样写会引发两个严重的问题:
1、10点前的timeStamp会出现空格,网上很多人在讨论了,但忽略了下面这个问题;
2、%date%和%time%都是直接读windows的时间格式(也就是右下角的那个时间格式),会出现不通用的结果。
下面来说下我的解决方案:
采用wmic来格式化时间,得出YYYYMMDDHHMinSec,这样就不会出现任何格式问题,代码如下:
@echo off for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a" echo %dt:~0,14%
>20180123112344
然后在此基础上加各种分隔符就好:
@echo off for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a" echo %dt:~0,4%-%dt:~4,2%-%dt:~6,2%_%dt:~8,2%-%dt:~10,2%-%dt:~12,2% >2018-01-23_11-23-44
完毕
################################
这个问题的解答来自
https://stackoverflow.com/questions/11037831/filename-timestamp-in-windows-cmd-batch-script (搜关键字wmic)
更多八仙过海各显神通的版本来自
https://stackoverflow.com/questions/203090/how-do-i-get-current-datetime-on-the-windows-command-line-in-a-suitable-format
//stackoverflow是个好东西