之前做了個工具包,用了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是個好東西