使用 %time% 變數的批次腳本需要前導零

使用 %time% 變數的批次腳本需要前導零

我在 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

可以在這裡工作,而不需要向腳本添加任何新行。不過,它可能不如多個命令解決方案優雅。

相關內容