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是個好東西

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM