2014-12-08 6 views
0

다음 명령으로 구성된 배치 파일이 있습니다.cmd를 사용하여 파일 이름 바꾸기 및 중복 파일 이름 허용

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

그러나 중복 된 파일이있는 경우 명령이 실행되지 않습니다. 내 명령의 파일 이름이 *(1).pdf*(2).pdf 등으로 중복되는 경우 이름을 바꿉니다. 어떻게해야합니까?

+0

는 올리지 [cmd를 사용하여 파일의 이름을 변경하고 중복 파일 이름을 허용 (HTTPS하지 마십시오 : // 유저가됩니다. co.kr/q/849881) – DavidPostill

+0

[Windows 배치 파일을 복사하여 중복 보관할 수 있습니다] 중복 가능 (http://stackoverflow.com/questions/5248393/windows-batch-file-to-copy-and-keep-duplicates) – DavidPostill

+0

@DavidPostill - 확실히 중복되지 않습니다. REN은 COPY와 동일하지 않으며, 유일한 해결책은이 문제에 대해 작동하지 않습니다. – dbenham

답변

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" 
+0

위대한, 그러나, 나는'filename (12)'이상'filename_012' 선호하고 그에 따라 스크립트를 조정할 수 없습니다. 나는 모든 것을 혼란에 빠뜨린 것 같아.하지만 이걸로 생각해.'("% name : (=. %")'. – FatalBulletHit

관련 문제