批处理如何重命名保存到变量中的文件?

时间:2013-03-21 15:11:38

标签: windows batch-file file-rename

这是我的情况:

@echo off

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

如何将%file%变量重命名为get(使用echo命令):

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

1 个答案:

答案 0 :(得分: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的最后几页。