2013-03-21 58 views

回答

1

%time%環境變量中包含時間戳。

:: Remove colons from %time% 
set ts=%time::=% 

:: Remove centiseconds from %ts% 
set ts=%ts:~0,-3% 

:: file=HHMMSS_file 
set file=%ts%_%file% 

如果您需要時間戳包括日期,你可以通過類似的方式刮%date%環境變量得到它。有關更多信息,請參閱DOS String Manipulation上的此頁面。

如果您的%file%變量已經包含了路徑,並且您試圖在路徑和文件名之間插入時間戳,那有點麻煩。您將需要使用for /f循環或call子批次進行批次參數替換。

@echo off 
setlocal 

set file=C:\Users\test\Desktop\fscls.cfg 

:: set ds=YYYYMMDDHHMMSS.etc (the result of wmic os get localdatetime) 
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set ds=%%I 

:: set ds=YYYYMMDD 
set ds=%ds:~0,8% 

:: Insert %ds% into %file% 
call :insert "%file%" "%ds%_" file 

echo new filename: %file% 

:: end main 
goto :EOF 

:insert <path> <str_to_insert> <varname_to_set> 
set "%~3=%~dp1%~2%~nx1" 

看到最後幾的help forhelp call頁面獲取更多信息。

+0

它似乎是一個很好的解決方案,但我想添加一個datestamp(YYYYMMDD),而不是時間戳,對不起。 – rschirin 2013-03-21 16:00:30

+1

確實。那麼,正如我在我的答案中的示例腳本中提到的那樣,您可以從'%date%'環境變量中刪除日期。如果您擔心繫統區域設置會影響'%date%'變量的格式,您可以從'wmic os get localdatetime'獲取與系統無關的日期。你可以使用'for/f'循環捕獲'wmic'命令的輸出。 'for/f「tokens = 2 delims ==」%% I in('wmic os get localdatetime/format:list')do set datetime = %% I';然後'%datetime:〜0,8%'會給你你正在尋找的YYYYMMDD。 – rojo 2013-03-21 16:06:24

+0

@rschirin - 好的,我修改了第二個腳本以獲取datestamp而不是時間戳。請享用。 – rojo 2013-03-21 16:49:22