С помощью XCopy скопируйте файл и не перезаписывайте предыдущий, если он существует (без запроса) - PullRequest
21 голосов
/ 01 марта 2011

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

Ответы [ 6 ]

52 голосов
/ 18 марта 2013

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

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

19 голосов
/ 07 января 2015

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

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

3 голосов
/ 02 августа 2017

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

3 голосов
/ 11 августа 2011

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

replace <path1> <path2> /A
3 голосов
/ 01 марта 2011

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

1 голос
/ 31 марта 2014

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

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

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

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

...