Я отправляю команды на удаленный компьютер, чтобы он скопировал файл. Я хочу, чтобы файл копировался, но не перезаписывал предыдущий файл с тем же именем (если он существует). Мне также нужно, чтобы команда запускалась без каких-либо запросов (xcopy любит запрашивать, является ли указанное мной целевое имя файлом или каталогом, а также запрашивает перезапись файла).
XCopy копирует файл и не перезаписывает предыдущий, если он существует (без запроса)
Ответы (7)
Насколько мне известно, невозможно сделать так, чтобы он НЕ перезаписывался. но / Y заставит его перезаписать. и / я избавлюсь от подсказки file / dict. См. xcopy /?
для всех вариантов
У меня хорошие результаты с xcopy /d
.
Он скопирует файлы NEWER, и, поскольку мы можем предположить, что существующие файлы имеют одинаковую метку времени, вы будете копировать только файлы, которые не существуют.
на всякий случай, если кто-то еще найдет это: robocopy x: \ sourcefolder Y: \ destfolder / s / e / r: 0 / z
намного лучше, чем xcopy, даже дает вам таблицу в конце, информирующую о любых неудачных или пропущенных файлах. Не предлагает не перезаписывать.
Что ж, есть определенное средство! Это помогло мне сэкономить много сил и времени на Win10 при написании установки для демонстрации нашего продукта.
Просто попробуйте использовать трубопровод:
@ECHO N | COPY / -Y Исходные файлы Место назначения
В качестве примера я использовал этот фрагмент кода, чтобы получить чистую, тихую и безопасную копию!
@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)
Следующая команда скопирует файлы и папку, но не переопределит файл, если он уже существует.
xcopy "*.*" "C:\test\" /s /y /d
Вы также можете использовать команду 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
Я также проверил, что эта команда оставляет существующие файлы в покое. (Вы тоже должны :-)