2012-12-30 176 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

相關問題