0

这是我的情况:

@echo off

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

如何重命名 %file% 变量以获取(使用 echo 命令):

C:\Users\test\Desktop\TIMESTAMP_fscls.cfg
4

1 回答 1

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 字符串操作的此页面。

如果您的%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 for和的最后几页。help call

于 2013-03-21T15:19:45.997 回答