2011-05-12 74 views
2

在Windows 2008框中,如果在09:59之後和00:00之前,以下行可以正常工作。當第一個小時數位爲零時,向文件名添加時間戳

REN "D:\myfile.out" myfile-%DATE:/=%-%TIME::=%%.out 

但是,如果我在10:00之前執行此操作,則會出現語法錯誤。它似乎試圖用空格而不是零來重命名文件。導致錯誤的原因。例如:

Myfile-120511- 95343.out - 

當我需要它沒有錯誤保存這樣的:

Myfile-120511-095343.out 

任何幫助,將不勝感激。

回答

2

你需要以及編輯出在時間上領先的空間編輯冒號(:)

set FormatedTime=%Time: =0% 

REN "D:\myfile.out" myfile-%DATE:/=%-%FormatedTime::=%.out 
+0

感謝安迪,我最終使用: – Adam 2011-05-12 13:00:22

+0

集FORMATTEDTIME =%時間: = - %和REN「MyFile.out」MyFile-%DATE:/ =% - %FormattedTime :: = %%。out它不會插入0,因此將它換成 - 。非常感謝您的幫助。亞當 – Adam 2011-05-12 13:03:06

0

,你必須考慮到的主要空間和區域設置日期和時間格式。 (1)將日期和時間格式字符串臨時更改爲衆所周知的格式,(2)解析返回的%日期%和%時間%,適當處理空格,以及(3) )在LOGDATETIME變量中放置了一個完整的時間戳。

:logdatetime 
reg copy "HKCU\Control Panel\International" "HKCU\Control Panel\International-Temp" /f >nul 
reg add "HKCU\Control Panel\International" /v sShortDate /d "yyyy-MM-dd" /f >nul 
set LogDate=%date% 
reg add "HKCU\Control Panel\International" /v sTimeFormat /d "HH:mm:ss" /f >nul 
set LogTime=%Time% 
reg copy "HKCU\Control Panel\International-Temp" "HKCU\Control Panel\International" /f >nul 
set loghour=%logtime:~0,2% 
if "%loghour:~0,1%" == " " set loghour=0%loghour:~1,1% 
set logmin=%logtime:~3,2% 
if "%logmin:~0,1%" == " " set logmin=0%logmin:~1,1% 
set logsec=%logtime:~6,2% 
if "%logsec:~0,1%" == " " set logsec=0%logsec:~1,1% 
set logyear=%logdate:~0,4% 
set logmonth=%logdate:~5,2% 
if "%logmonth:~0,1%" == " " set logmonth=0%logmonth:~1,1% 
set logday=%logdate:~8,2% 
if "%logday:~0,1%" == " " set day=0%day:~1,1% 
set logdatetime=%logyear%%logmonth%%logday%%loghour%%logmin%%logsec% 
goto :eof 

使用它在你的代碼,只需在蝙蝠的開始調用它,並使用返回LOGDATETIME varialble

CALL :logdatetime 
... 
REN "D:\myfile.out" myfile-%LOGDATETIME%.out