相信很多人會用到將日期時間格式化成自己想要的字串,在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=*** - 指分隔符集。這個替換了空格和跳格鍵的//指定分割的字元列入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寫成批處理,就變成這樣(goodtime.bat):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
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:\shared\datescript.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會依賴於日期時間的格式。僅此而已
dos下格式化磁碟
格式化 分割槽磁碟可用eqmagic pe等工具。當沒有這些工具時,可用dos下的命令格式化。但是dos下的格式化會比較慢一點。其實也可用滑鼠右擊選擇格式化方式實現.dos下的格式化磁碟命令 format e fs fat32 將e盤轉換成fat32格式。將fat32改為ntfs是將e盤轉換為ntf...
DOS批處理下格式化日期字串的多種方法 詳解
在linux下,簡單的一句話 date y m d h m s 就可以得到你要的輸出 20120331 064219 可是在windows下,要想得到這個,還是需要費點功夫的。1.直接用字串格式化輸出 比如,如果你的機器上時間的輸出是這樣子的 c echo date time 2012 03 31 ...
用fmt formatDate格式化日期欄位的輸出
日曆控制項的輸出格式為 x xx xx,因為是資訊編輯頁,所以要從資料庫中取出使用者已新增的資訊輸出到文字框中,所以取出的資料格式要和日曆控制項保持一致,不然就會抱錯。我使用了標籤 使用方法如下例 nf cus calendar datatype require msg 請輸入出生日期 datest...