2

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

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

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

4

1 回答 1

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
于 2012-12-30T21:52:56.017 回答