程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> 三種DOS批處理下格式化日期字符串方法

三種DOS批處理下格式化日期字符串方法

編輯:更多關於編程

     在Linux下,簡單的一句話:date '+%Y%m%d-%H%M%S'就可以得到你要的輸出:20120331-064219 可是在windows下,要想得到這個,還是需要費點功夫的

    談到日期字符串的輸出,真是讓人煩。    在Linux下,簡單的一句話:date '+%Y%m%d-%H%M%S'就可以得到你要的輸出:20120331-064219  可是在windows下,要想得到這個,還是需要費點功夫的。    1. 直接用字符串格式化輸出    比如,如果你的機器上時間的輸出是這樣子的:  c:>echo %date%-%time%  2012-03-31 星期六- 6:44:02.50  那麼,要想得到輸出20120331- 64402,可以這樣截取字符串:  c:>echo %date:~0,4%%date:~5,2%%date:~8,2%-%time:~0,2%%time:~3,2%%time:~6,2%  20120331- 65406  表示取從0位置開始4個字符等等。這個方法不能截斷空格。比較惱火    2.用for語句分斷截取,似乎好點    先看看for的用法:    代碼如下: FOR /F ["options"] %variable IN (file-set) DO command [command-parameters] FOR /F ["options"] %variable IN ("string") DO command [command-parameters] FOR /F ["options"] %variable IN ('command') DO command [command-parameters]     optinos  eol=c           - 指一個行注釋字符的結尾(就一個)//要忽略以什麼字符開頭的行  skip=n          - 指在文件開始時忽略的行數。  delims=xxx      - 指分隔符集。這個替換了空格和跳格鍵的//指定分割的字符列入delims=;:.使用了";",":","."做分隔                    默認分隔符集。  tokens=x,y,m-n  - 指每行的哪一個符號被傳遞到每個迭代                    的 for 本身。這會導致額外變量名稱的分配。m-n                    格式為一個范圍。通過 nth 符號指定 mth。如果                    符號字符串中的最後一個字符星號,                    那麼額外的變量將在最後一個符號解析之後                    分配並接受行的保留文本。  usebackq        - 指定新語法已在下類情況中使用:                    在作為命令執行一個後引號的字符串並且一個單                    引號字符為文字字符串命令並允許在 filenameset                    中使用雙引號擴起文件名稱。  參照這個用法,我們可以對日期字符串進行格式化輸出:  因為日期結果是:2012-03-31 星期六  因為分隔字符是'-'還有空格' ',所以取3段出來,如:  c:>for /f "tokens=1-3 delims=- " %1 in ("%date%") do @echo %1%2%3  20120331  再看時間:  c:>echo %time%  6:59:20.38  c:>for /f "tokens=1-3 delims=.: " %1 in ("%time%") do @echo %1%2%3  65939  兩者一結合起來可以這樣用:   代碼如下: c:>for /f "tokens=1-3 delims=- " %1 in ("%date%") do set ttt=%1%2%3  c:>set ttt=20120331  c:>for /f "tokens=1-3 delims=.: " %1 in ("%time%") do set ttt=%ttt%-%1%2%3  c:>set ttt=20120331-70131     寫成批處理,就變成這樣(goodtime.bat):      代碼如下: for /f "tokens=1-3 delims=- " %%1 in ("%date%") do set ttt=%%1%%2%%3 for /f "tokens=1-3 delims=.: " %%1 in ("%time%") do set ttt=%ttt%-%%1%%2%%3     echo goodtime=%ttt%  這種方法比較靈活。    3.還有一種,是使用VBScript來定制輸出      代碼如下: wscript.echo   year(date)   &   right( "0"   &   month(date),2)   &   right( "0"   &   day(date),2)   &   "-" & right( "0"   &   hour(time),2)   &   right( "0"   &   minute(time),2)      結果如下,還是比較有意思的     代碼如下: c:>cscript /nologo c:shareddatescript.vbs 20120331-0711 當然這樣還是不太理想,可以寫個批處理,把結果弄到環境變量當中: mydate2.bat,內容如下: @echo off cscript /nologo datescript.vbs >> tmp.txt for /f "tokens=*" %%1 in (tmp.txt) do set goodtime=%%1 echo goodtime=%goodtime%     總結起來,第3種方法最復雜,目前還不能斷定是否在所有windows平台都能正確運行,但是結果應該是固定的。不隨著date,time格式變動而變動。但是1和2會依賴於日期時間的格式。僅此而已。  還是linux下比較固定。     
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved