使用cmd重命名文件并允许重复文件名

时间:2014-12-08 10:26:10

标签: batch-file cmd duplicates rename

我的批处理文件包含以下命令。

REN "H:\April2012\A04\mr_sudheendra_holla_vaderhobli.pdf.1335780379203.ver1" "mr_sudheendra_holla_vaderhobli.pdf"

但是如果存在重复文件,则不会执行该命令。如果有重复项,我希望我的命令将文件名重命名为*(1).pdf*(2).pdf等。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

<强> renDup.bat

@echo off
setlocal disableDelayedExpansion
ren %1 %2 2>nul && echo %1 --^> "%~n2(%max%)%~x2"|| call :renDup %1 %2
exit /b

:renDup
set max=0
for /f "delims=" %%F in (
  'dir /b "%~dp1%~n2(*)%~x2" 2^>nul ^| findstr /ri "([1-9][0-9]*)\%~x2$"'
) do call :getMax "%%~nF"
set /a max+=1
ren %1 "%~n2(%max%)%~x2" && echo %1 --^> "%~n2(%max%)%~x2"
exit /b

:getMax
set "name=%~1"
set "name=%name:~0,-1%"
for %%N in ("%name:(=.%") do set num=%%~xN
set /a num=%num:~1%
if %num% gtr %max% set "max=%num%"
exit /b


用法:

renDup "H:\April2012\A04\mr_sudheendra_holla_vaderhobli.pdf.1335780379203.ver1" "mr_sudheendra_holla_vaderhobli.pdf"