我在 DOS 腳本中遇到一個錯誤,該腳本使用日期和時間資料進行檔案命名。問題是我最終得到了一個間隙,因為時間變數沒有自動為 < 10 小時提供前導零。
有誰知道有條件地填滿前導零來解決這個問題的方法?
更多資訊:我的文件名設定命令是:
set logfile=C:\Temp\robolog_%date:~-4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.log
最終為:C:\Temp\robolog_20100602_ 93208.log(早上 9:23)。
這個問題與這個。
謝謝
答案1
一個非常簡單的方法是將前導空格替換為零:
echo %TIME: =0%
輸出:
09:18:53,45
答案2
我的解決方案是使用以下想法:
SET HOUR=%TIME:~0,2%
IF "%HOUR:~0,1%" == " " SET HOUR=0%HOUR:~1,1%
答案3
類似的想法丹尼斯的回答。問題是 的寬度%time%
始終相同,因此它在開頭插入一個空格而不是傳回較短的字串。
你可以用以下方法擺脫它for
:
for /f "delims= " %x in ("%time%") do set T=0%x
那麼,其餘部分或多或少是相同的。
答案4
對於實現上述所有內容的最緊湊的解決方案,我認為
FOR /F "TOKENS=1-4 DELIMS=/ " %%A IN ("%DATE%") DO FOR /F "TOKENS=1-3 DELIMS=:." %%E IN ("%TIME: =0%") DO SET logfile=C:\Temp\robolog_%%D%%C%%B_%%E%%F%%G.log
可以在這裡工作,而不需要向腳本添加任何新行。不過,它可能不如多個命令解決方案優雅。