2013-03-20 3 views
3
set dSource=C:\Games\Steam\steamapps 
set dTarget=E:\Demos 
set fType=*.dem 

xcopy/i "%dSource%\%fType%" "%dTarget%" 

Это то, что я в настоящее время должен копировать все мои файлы, но как я могу получить его, чтобы скопировать все файлы и переименовать имя одного и того же имени, чтобы сохранились обе копии в папке назначения.Пакетное копирование всех файлов без перезаписи

Например:
источник: demo.dem
назначения: demo.dem

Переход к:
назначения: demo.dem, демонстрационный (1) .dem

ответ

2

Попробуйте это решение с copy:

@echo off &setlocal 
set "dSource=C:\Games\Steam\steamapps" 
set "dTarget=E:\Demos" 
set "fType=*.dem" 

for %%i in ("%dSource%\%fType%") do if not exist "%dtarget%\%%~nxi" (copy /b "%%~i" "%dtarget%") else call :process "%%~i" 
goto :eof 

:process 
set /a cnt=-1 
:loop 
set /a cnt+=1 
set "fname=%dtarget%\%~n1(%cnt%)%~x1" 
if exist "%fname%" goto :loop 
copy /b "%~1" "%fname%" 
goto :eof 

endlocal 
0
@ECHO OFF 
SETLOCAL 
SET source=c:\sourcedir 
SET dest=c:\destdir 
SET mask=*.* 
FOR /f "delims=" %%i IN (
    ' dir /b /a-d "%source%\%mask%" ' 
) DO IF EXIST "%dest%\%%i" (
    SET "destfn=" 
    SET "sourcefn=%source%\%%i" 
    FOR /l %%g IN (1,1,9) DO IF NOT DEFINED destfn IF NOT EXIST "%dest%\%%~ni(%%g)%%~xi" SET destfn=%dest%\%%~ni(%%g^)%%~xi 
    IF NOT DEFINED destfn FOR /l %%g IN (10,1,99) DO IF NOT DEFINED destfn IF NOT EXIST "%dest%\%%~ni(%%g)%%~xi" SET destfn=%dest%\%%~ni(%%g^)%%~xi 
    IF NOT DEFINED destfn FOR /l %%g IN (100,1,999) DO IF NOT DEFINED destfn IF NOT EXIST "%dest%\%%~ni(%%g)%%~xi" SET destfn=%dest%\%%~ni(%%g^)%%~xi 
    IF NOT DEFINED destfn FOR /l %%g IN (1000,1,9999) DO IF NOT DEFINED destfn IF NOT EXIST "%dest%\%%~ni(%%g)%%~xi" SET destfn=%dest%\%%~ni(%%g^)%%~xi 
    CALL :copyg 
) ELSE (XCOPY "%source%\%%i" "%dest%\" >nul) 
) 
GOTO :eof 

:copyg 
IF DEFINED destfn (ECHO F|XCOPY "%sourcefn%" "%destfn%" >nul 
) ELSE (ECHO "%sourcefn%" NOT copied - out of generation numbers 
) 
GOTO :eof 

ВНИМАНИЕ: Как отправлено, процедура будет XCOPY.

Я предлагаю вам изменить заявления XCOPY на ECHO ... и >nul/ECHO F|, чтобы посмотреть, что будет генерироваться первый XCOPY инструкции.

(> NUL подавляет copied сообщения, что ECHO F| силы XCOPY скопировать адресат ФАЙЛ поскольку нет XCOPY переключателя, чтобы это)

Смежные вопросы