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


 

 

你在這里看到了我的現在的時間是01:15,沒錯正在做個開發,本來好好的,結果一運行,直接報錯:

這里就是時間中的獲取小時出了問題,之前23點那會已經調試通過了,過那時是沒有問題的,那么這時發生了什么?為何中間會多了一個空格?

在系統cmd中提取時間:

可以看到小時前面還是有空格,那么是編碼問題chcp 65001 改到 chcp 936 一樣還是。

最后,想到可能這里的時間是個位數?試試

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

 果然這樣就對了

 

還有就是,我的bat文件要可以在中文,和英文系統上提取時間,在chcp 65001 下提取的時間格式是不同的,那么如何能正確提取呢? 

   思路一:

    cmd判斷系統的語言,

        systeminfo輸出的中雖然有zh-cn 但是中英文都是一樣,排除

        采用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%

 


免責聲明!

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



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