it-swarm.com.ru

Как сказать "нет" всем запросам "Вы хотите перезаписать" в копии командного файла?

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

Вы можете добавить «/ Y», чтобы сказать «Да для всех» замен.

Но как вы можете сказать «нет всем»?

Другими словами, я хочу скопировать все из одного каталога, в котором not уже существует в целевой папке.

Самое близкое, что я вижу, - это аргумент XCOPY, который копирует вещи только после определенного времени мода.

51
JosephStyons

Если не существует сценария, в котором вы не хотите скопировать существующие файлы в источнике, которые изменились со времени последней копии, почему бы не использовать XCOPY с/D без указания даты?

69
Kev
echo "No" | copy/-Y c:\source c:\Dest\
28
krishnan

Вы можете создать текстовый файл с единственной длинной строкой «n», затем запустить свою команду и поставить после нее <nc.txt. Я сделал это, чтобы скопировать более 145 000 случаев, когда «Нет перезаписи» было то, что я хотел, и это работало нормально таким образом.

Или вы можете просто удерживать клавишу n с чем-то, но это занимает больше времени, чем использование <для передачи в нее.

21
Chris

Вот обходной путь. Если вы хотите скопировать все из A, которого еще нет в B:

Скопируйте A в новый каталог C . Скопируйте B на C, переписав все, что перекрывается с A . Скопируйте C на B.

11
Liam

Я использую XCOPY со следующими параметрами для копирования сборок .NET:

/D /Y /R /H 

/D:m-d-y - Copies files changed on or after the specified date. If no date is given, copies only those files whose source time is newer than the destination time.

/Y - Suppresses prompting to confirm you want to overwrite an existing destination file.

/R - Overwrites read-only files.

/H - Copies hidden and system files also.
6
chitza

Я знаю, вы все думаете, что/D: date собирается использовать материал для дат, но просто/D без: делает именно то, что мы хотим, чтобы ...

xcopy {Source} {Destination} /E /D 

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

Просто попробуйте, это работает.

6
Eddie Middlebrooks

Я ожидаю, что xxcopy имеет параметр для этого.

Бинго:

http://www.xxcopy.com/xxcopy27.htm#tag_231

2.3   By comparison with the file in destination

    The switches in this group select files based on the
    comparison between the files in the source and those in
    the destination.  They are often used for periodic backup
    and directory synchronization purposes. These switches
    were originally created as variations of directory backup.
    They are also convenient for selecting files for deletion.

2.3.1  by Presence/Absence

    The /BB and /U switches are the two switches which select
    files by the pure presence or absence as the criteria.
    Other switches in the this group (Group 2.3) are also
    affected by the file in the destination, but for a
    particular characteristics for comparison's sake.

    /BB  Selects files that are present in source but not in destination.
    /U   Selects files that are present in both source and destination.

-Адам

5
Adam Davis

это отлично работает

no | cp -rf c:\source c:\Dest\
4
ghostCoder

Попробуй это:

robocopy "source" "destination" /e /b /copyall /xo /it

Скопируйте эту строку в блокнот и сохраните как файл .bat. Запустите файл, и он скопирует все из источника в место назначения. При повторном запуске он не заменит идентичные файлы. при изменении или изменении файла он заменит файл в месте назначения.

проверить это. Я создал файл .txt с несколькими работами, запустил скрипт, изменил формулировку файла .txt и снова запустил скрипт, он заменил только файл изменений из источника. 

/e=Copies subdirectories. Note that this option includes empty directories
/b=Copies files in Backup mode
/copyall=Copies all file information
/xo=Excludes older files. (this is what prevents it from copy the same file over and over)
/it=Includes "tweaked" files. (this will allow the copy and replace of modified files)
3
Jeff Tondreau

Спасибо за это. Я использую утилиту командной строки AzCopy (v 3.1.0.93) для перемещения ~ 1 миллиона файлов с локального ПК в хранилище BLOB-объектов Azure. У меня есть несколько дубликатов, и я не могу присматривать за копией, чтобы ответить на каждый запрос, и не хочу повторно загружать один и тот же файл.

Утилита AzCopy предлагает команду/Y для подавления запросов на подтверждение, но в итоге говорит перезаписать файл назначения. Пройдя по этому маршруту, я смог получить его, чтобы НЕ перезагружать файл. Тем не менее, это выглядит как хак, поскольку на самом деле он не отвечает на запрос «Нет», вместо этого я получаю сообщение об ошибке «Не получено никакого ввода, когда пользователю необходимо сделать выбор из нескольких заданных опций». но не загружает файл.

Вот команда, которую я использовал: echo n | AzCopy/Source: "{путь к файлу}"/Dest: "{URL хранилища BLOB-объектов}"/DestKey: {ключ}

Надеюсь, это поможет следующему парню.

3
ammills01

эхо N | copy/-y $ (SolutionDir) SomeDir $ (OutDir)

3
Lufi

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

2
tloach

Мы использовали «robocopy» через «invoke-command», чтобы скопировать огромное количество виртуальных машин в нашей среде. Мы обнаружили, что «robocopy» иногда неожиданно завершается, и весь процесс падает. Поэтому мы решили использовать «xcopy». Теперь мы проверяем его работу и для опции «создать» «Не для всех» используем эту функцию (powershell):

функция gen_long_no ([строка] $ путь) { $ result = ""; Get-ChildItem $ path -Recurse | ? {if ($ _. PSIsContainer -eq $ false) {$ result + = "n"}}; вернуть $ результат }

Может быть, помогает кому-то.

0
blinker

Добавление переключателей для подкаталогов и проверки работают нормально . эхо н | xcopy/-Y/s/e/v c:\source *. * c:\Dest \

0
John Salter