2013-03-21 60 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