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 に答える