Windows批处理文件,用于将某些文件类型从子目录复制到一个具有重命名的文件夹

时间:2012-12-30 08:30:55

标签: windows batch-file cmd copy

我曾尝试制作批处理脚本,将位于G :(此处随机命名为子文件夹)\ 000.mpg的所有* .mpg文件复制到E:\ PVR。

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

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

1 个答案:

答案 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