中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

DOS批處理下格式化日期字符串的方法有哪些

發布時間:2021-09-30 14:24:12 來源:億速云 閱讀:291 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關DOS批處理下格式化日期字符串的方法有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

談到日期字符串的輸出,真是讓人煩。

在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:\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會依賴于日期時間的格式。僅此而已。
還是linux下比較固定。

關于“DOS批處理下格式化日期字符串的方法有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

基隆市| 凤山县| 奉贤区| 遵义县| 年辖:市辖区| 图木舒克市| 神木县| 汉阴县| 信丰县| 昌都县| 芜湖市| 宁南县| 龙江县| 聂拉木县| 肃宁县| 镇宁| 武川县| 西乌珠穆沁旗| 兴海县| 阿瓦提县| 镇安县| 鄂州市| 晋宁县| 留坝县| 崇州市| 泸西县| 巩义市| 缙云县| 四子王旗| 龙胜| 西安市| 西乌珠穆沁旗| 阳西县| 吉安县| 抚州市| 富川| 青河县| 涟水县| 北川| 江都市| 深水埗区|