2012-12-30 125 views
2

我试图制作DOS批处理脚本,将位于G:(随机命名的子文件夹)\ 000.mpg中的所有* .mpg文件复制到E: \ PVR。DOS批处理文件将某些文件类型从子目录复制到一个文件夹重命名

for /R g:\ %%f in (*.mpg) do copy %%f E:\PVR\ 

问题是源文件名是相同的,而它们是在所有子文件夹中具有相同名称的不同文件。该脚本会覆盖前一个文件,因此我只有批量复制后的最后一个文件。请帮我用计数器或其他东西重新命名复制的文件。

谢谢!

+0

你的问题是回答我的问题。谢谢! –

回答

6

这应该可以做到。

@echo off 
setlocal disableDelayedExpansion 
set "src=." 
set "dest=\temp" 
set mask=*.mpg 
for /r "%src%" %%F in (%mask%) do (
    if exist "%dest%\%%~nxF" (call :copyDup "%%F") else copy "%%F" "%dest%" >nul 
) 
exit /b 

:copyDup 
set /a cnt=1 
:loop 
set /a cnt+=1 
if exist "%dest%\%~n1(%cnt%)%~x1" goto :loop 
copy %1 "%dest%\%~n1(%cnt%)%~x1" >nul 
exit /b 

(不要忘了接受一个答案,如果它解决您的问题。你的录取率是相当低的。)

+0

美丽的代码:) – Lizz

相关问题