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

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


person Vic    schedule 01.03.2011    source источник


Ответы (7)


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

person Cine    schedule 01.03.2011
comment
Спасибо .. В итоге мне пришлось сделать это в два этапа - сначала проверить наличие, а затем действовать соответствующим образом. - person Vic; 02.03.2011

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

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

person Daniel Mošmondor    schedule 18.03.2013
comment
Я использую xcopy source dest / d / y / s - person Paul Gregoire; 30.09.2013
comment
новая вещь, которую я обнаружил недавно, относительно xcopy / s / d / y ... при копировании структуры каталогов он СОЗДАЕТ, а затем УДАЛЯЕТ папки назначения, если нет файлов, соответствующих заданной маске. очень странно, а иногда и очень странно. - person Daniel Mošmondor; 09.12.2014
comment
Я обнаружил, что параметр / D фактически копирует IFF файл, уже существующий в папке назначения, и он СТАРШЕ, чем файл с тем же именем из источника. Итак, файл ДОЛЖЕН существовать первым. Есть ли способ XCOPY, если в месте назначения нет файла? - person Fandango68; 28.08.2017

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

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

person wellspokenman    schedule 07.01.2015
comment
вы сэр джентльмен и ученый, сначала не подумал, что это не перезапись, но потом я начал получать 100% новый файл ... - person Captnwalker1; 30.06.2015
comment
Для всех остальных, поскольку вопрос был для одного файла, на основе этого ответа: stackoverflow.com/questions/8935583/, команда может быть robocopy x: \ sourcefolder Y: \ destfolder / XO. А чтобы сделать команду (например, XCopy) бесшумной, вы можете включить команды, представленные здесь stackoverflow.com/questions/3898127/ - person Declan Taylor; 25.03.2020

Что ж, есть определенное средство! Это помогло мне сэкономить много сил и времени на 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)

person Sina    schedule 02.08.2017
comment
Это должен был быть официальный ответ - person Fandango68; 28.08.2017

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

xcopy "*.*" "C:\test\"  /s /y /d
person rajesh    schedule 03.09.2019

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

replace <path1> <path2> /A
person potes    schedule 11.08.2011
comment
Параметр OK, однако вы не можете использовать его с / S для включения подкаталогов. - person Merkidemis; 20.06.2013
comment
Мне очень нравится этот вариант, но имейте в виду, что он не работает, если путь не найден, если папка назначения не существует, и, похоже, нет возможности принудительно создать папку назначения, если она отсутствует. - person Jay Michaud; 24.03.2016

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

Я сделал это довольно «хакерски»:

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

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

person Erk    schedule 31.03.2014