Имея XCopy скопировать файл и не перезаписать предыдущий, если он существует (без запроса)

Я отправляю команды на удаленный компьютер, чтобы он скопировал файл. Я хочу, чтобы файл был скопирован, но не перезаписывать предыдущий файл с тем же именем (если он существует). Мне также нужна команда для запуска без каких-либо подсказок (xcopy любит запрашивать, является ли указанное мною целевое имя файлом или каталогом, а также запрашивать перезапись файла).

6 ответов


нет способа сделать это не перезаписать, насколько я знаю. но /Y заставит его перезаписать. и / я избавлюсь от подсказки file/dict. См.xcopy /? для всех вариантов


У меня хорошие результаты с xcopy /d.

он будет копировать новые файлы, и поскольку мы можем предположить, что существующие файлы имеют одинаковую отметку времени, вы будете копировать только файлы, которые не существуют.


на всякий случай, если кто-нибудь еще найдет это: робокопия x:\sourcefolder Y:\destfolder /s /e /r:0 / z

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


вы также можете использовать команду replace. Он имеет два режима: добавлять файлы, которые там не существуют, или заменять файлы, которые существуют. Вы хотите предыдущий режим:

replace <path1> <path2> /A

мне пришлось копировать и переименовывать файлы, поэтому я получил приглашение о создании файла или каталога.

это, скорее, "хакерский" способ, которым я это сделал:

ECHO F | XCOPY /D "C:\install\dummy\dummy.pdf" "C:\Archive\fffc810e-f01a-47e8-a000-5903fc56f0ec.pdf"

XCOPY будет использовать "F", чтобы указать, что он должен создать цель в виде файла:

C:\install>ECHO F   | XCOPY /D "C:\install\dummy\dummy.html" "C:\Archive\aa77cd6e-1d19-4eb4-b2a8-3f8fe60daf00.html"
Does C:\Archive\aa77cd6e-1d19-4eb4-b2a8-3f8fe60daf00.html specify a file name or directory name on the target
(F = file, D = directory)? F
C:\install\dummy\dummy.html
1 File(s) copied

Я также проверил, что эта команда оставляет существующие файлы в покое. (Вы тоже должны : -)


Ну, есть определенное средство! Это помогло мне сэкономить много усилий и времени на Win10 при написании настройки для нашей демонстрации продукта.

просто попробуйте использовать трубопроводы:

@ECHO N / COPY / - Y SourceFiles назначения

в качестве примера я использовал его фрагмент кода, чтобы у меня была чистая тихая и безопасная копия!

@FOR /D %%F in ("FooPath") DO @(
   @ECHO N|COPY /-Y ^"%%~npdxF\*.*^" ^"GooPath^" 3>NUL 2>NUL >NUL
)

где, очевидно,FooPath является источником и GooPath назначения.

наслаждайтесь!

(основной источник: https://ss64.com/nt/copy.html)