Ответ 1
Если нет сценария, в котором вы не хотите копировать существующие файлы в источнике, который был изменен с момента последней копии, почему бы не использовать XCOPY с /D без указания даты?
По умолчанию копирование из командной строки предложит вам перезаписать файлы, которые уже существуют в целевом местоположении.
Вы можете добавить "/Y", чтобы сказать "Да всем".
Но как вы можете сказать "Нет ко всем"?
Другими словами, я хочу скопировать все из одного каталога, в котором уже существует не.
Ближайшая вещь, которую я вижу, - это аргумент XCOPY для копирования только после определенного времени mod-datetime.
Если нет сценария, в котором вы не хотите копировать существующие файлы в источнике, который был изменен с момента последней копии, почему бы не использовать XCOPY с /D без указания даты?
echo "No" | copy/-Y c:\source c:\Dest\
Вы можете сделать текстовый файл с одной длинной строкой "n", а затем запустить свою команду и поместить < nc.txt после него. Я сделал это, чтобы скопировать более 145 000 экземпляров, где "No overwrite" было тем, что я хотел, и он отлично срабатывал таким образом.
Или вы можете просто удерживать клавишу n с чем-то, но это занимает больше времени, чем использование < для его прокладки.
Вот обходной путь. Если вы хотите скопировать все из A, которое еще не существует в B:
Скопировать A в новый каталог C. Скопируйте B в C, перезаписав все, что накладывается на A. Скопируйте C в B.
Я использую 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.
Я знаю, что вы все думаете /D: дата будет использовать материал даты, но просто /D без: делает именно то, что мы хотим...
xcopy {Source} {Destination} /E /D
Скопирует без перезаписывания, чтобы забрать те файлы, которые являются новыми или, возможно, не сработали раньше по какой-либо причине.
Просто попробуй, он работает.
Я ожидаю, что 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 sake.
/BB Selects files that are present in source but not in destination.
/U Selects files that are present in both source and destination.
-Adam
это прекрасно работает
no | cp -rf c:\source c:\Dest\
эхо N | copy/-y $(SolutionDir) SomeDir $(OutDir)
Попробуйте следующее:
robocopy "source" "destination" /e /b /copyall /xo /it
Скопируйте эту строку в блокнот и сохраните как .bat файл. Запустите файл, и он скопирует все из источника в пункт назначения. Когда вы запустите его снова, он не заменит файлы, которые идентичны. при изменении или изменении файла он заменит файл в пункте назначения.
проверьте это. Я создал файл .txt с несколькими работами, запустил script, изменил формулировку в .txt файле и снова запустил script, заменив только файл изменений из источника.
/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)
Спасибо за это. Я использую утилиту командной строки AzCopy (v 3.1.0.93), чтобы переместить ~ 1 миллион файлов с моего локального ПК в хранилище Azure blob. У меня есть несколько дубликатов и не могу присматривать за копией, чтобы отвечать на каждое приглашение и не хочу повторно загружать тот же файл.
Утилита AzCopy предлагает команду /Y для подавления подсказок подтверждения, но заканчивает тем, что она перезаписывает файл назначения. Идя по этому маршруту, я смог получить его, чтобы НЕ повторно загрузить файл. Тем не менее, это похоже на хак, поскольку на самом деле он не отвечает на приглашение "Нет", вместо этого я получаю сообщение об ошибке "Нет ввода, когда пользователю нужно сделать выбор между несколькими заданными параметрами". но не загружает файл.
Вот команда, которую я использовал: echo n | AzCopy/Источник: "{путь к файлу}" /Dest: "{URL-адрес памяти blob}" /DestKey: {key}
Надеюсь, это поможет следующему парню.
В зависимости от размера и количества копируемых файлов вы можете скопировать каталог назначения по первому источнику с помощью "да для всех", затем выполнить оригинальную копию, которую вы делаете, а также установить "да для всех". Это должно дать вам те же результаты.
Мы использовали "robocopy" через "invoke-command" для копирования огромного количества виртуальных машин в нашей среде. Мы обнаружили, что "robocopy" неожиданно выходит, и весь процесс идет вниз. Поэтому мы решили использовать "xcopy". Теперь мы проверяем его работу и "создаем" параметр "Не для всех", мы используем эту функцию (powershell):
function gen_long_no ([string] $path) { $ result = "; Get-ChildItem $path -Recurse |? {if ($ _. PSIsContainer -eq $false) {$ result + =" n"}}; return $result }
Может кому-то помочь.
Добавление переключателей для подкаталогов и проверки работает нормально. эхо н | xcopy / -Y/s/e/v c:\source *. * c:\Dest \