cmd提取時間格式(小時)問題以及Windows系統語言判斷

 

 

你在這裏看到了個人如今的時間是01:15,沒錯正在作個開發,原本好好的,結果一運行,直接報錯:windows

這裏就是時間中的獲取小時出了問題,以前23點那會已經調試經過了,過那時是沒有問題的,那麼這時發生了什麼?爲什麼中間會多了一個空格?編碼

在系統cmd中提取時間:spa

能夠看到小時前面仍是有空格,那麼是編碼問題chcp 65001 改到 chcp 936 同樣仍是。.net

最後,想到可能這裏的時間是個位數?試試命令行

for /l %i in (0,1,9) do ( if %time:~0,2%==%i echo 0%i )
01

 果真這樣就對了3d

 

還有就是,個人bat文件要能夠在中文,和英文系統上提取時間,在chcp 65001 下提取的時間格式是不一樣的,那麼如何能正確提取呢? 指針

   思路一:調試

    cmd判斷系統的語言,code

        systeminfo輸出的中雖然有zh-cn 可是中英文都是同樣,排除blog

        採用dxdiag輸出文件後有具體的語言,但是每當執行到這裏時,這兩個命令都會等好一會時間,並且執行dxdiag命令後,檢測生成的文件還會提示文件不存,但實際上是有輸出的。排除

  思路二:

    既然系統提取的時間不一樣那麼直接根據不一樣來判斷,不一樣主要是在提取的時間有沒有/,通常正常提取後是:20181022 錯誤的是 2018/10/22

set dateTime=%date:~10,4%%date:~4,2%%date:~7,2%_%hour%%time:~3,2%%time:~6,2%%time:~9,2%
echo %dateTime% |find "/" &&    set dateTime=%date:~3,4%%date:~8,2%%date:~11,2%_%hour%%time:~3,2%%time:~6,2%%time:~9,2%

    這樣咱們就能夠提取正確的時格式,又能夠判斷系統的語言了。

 

若是想要獲取系統語言:

dism /online /get-intl

 

 

cmd時間格式參考:

參考:原文:https://blog.csdn.net/jinhoward/article/details/20213213 

好比在windowscmd命令行窗口執行date命令後這個環境變量的值爲

那麼以下的各個操做的意義以下:
%date:~0,4%  表示從左向右指針向右偏0位,而後從指針偏移到的位置開始提取4位字符,結果是2014(年的值)
%date:~5,2%  表示指針從左向右偏移5位,而後從偏移處開始提取2位字符,結果是03(月的值)
%date:~8,2%  表示指針從左向右偏移8位,而後從偏移處開始提取2位字符,結果是01(日的值)
%date:~5%    表示指針從左向右偏移5位,而後提取全部的值
%date:~-5%   表示指針反方向偏移,從最右端開始,偏移5位,而後從指針處提取左邊的全部數值。
注意:「2014-03-01 星期六」是個字符串,在計算機裏指針是從0開始計數的,因此這串字符的指針意義上的第5位是0,月份的0,取兩位恰好是03.

同理,好比當前系統的time變量的值以下:

 

那麼以下的各個操做的意義以下:%time:~0,2%  表示從左向右指針向右偏0位,而後從指針偏移到的位置開始提取2位字符,結果是小時字段數值%time:~3,2%  表示指針從左向右偏移3位,而後從偏移處開始提取2位字符,結果是分鐘字段數值%time:~6,2%  表示指針從左向右偏移6位,而後從偏移處開始提取2位字符,結果是秒字段數值實戰操做:                                                                                                                       md d:\%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%

相關文章
相關標籤/搜索