0
這是我的情況:批量如何重命名保存到變量中的文件?
@echo off
Setlocal EnableDelayedExpansion
set file=C:\Users\test\Desktop\fscls.cfg
我怎麼可以重命名文件%%變量來獲得(與echo命令):
C:\Users\test\Desktop\TIMESTAMP_fscls.cfg
這是我的情況:批量如何重命名保存到變量中的文件?
@echo off
Setlocal EnableDelayedExpansion
set file=C:\Users\test\Desktop\fscls.cfg
我怎麼可以重命名文件%%變量來獲得(與echo命令):
C:\Users\test\Desktop\TIMESTAMP_fscls.cfg
的%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 for
和help call
頁面獲取更多信息。
它似乎是一個很好的解決方案,但我想添加一個datestamp(YYYYMMDD),而不是時間戳,對不起。 – rschirin 2013-03-21 16:00:30
確實。那麼,正如我在我的答案中的示例腳本中提到的那樣,您可以從'%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
@rschirin - 好的,我修改了第二個腳本以獲取datestamp而不是時間戳。請享用。 – rojo 2013-03-21 16:49:22