Копировать файлы без перезаписи - PullRequest
88 голосов
/ 19 ноября 2010

Я просто не могу найти способ в командной строке сказать "скопировать все файлы из каталога A в каталог B, но если файл уже существует в каталоге B, не перезаписывайте его, независимо от того, какойфайл более новый, и не предлагайте мне. "

Я прошел через копирование, перемещение, ксерокопию и робокопию, и самое близкое, что я могу получить, это то, что вы можете сказать робокопии" скопировать А в Б, ноне перезаписывать новые файлы более старыми, "но это не работает для меня.Я посмотрел на xxcopy, но отбросил его, так как не хочу иметь стороннюю зависимость от события пост-сборки Visual Studio, которое потребует, чтобы другие пользователи SVN установили этот инструмент для сборки.

Я хочу добавить командную строку к событию после сборки в Visual Studio 2010, чтобы файлы, генерируемые из шаблонов T4 для новых объектов модели EF , получалираспространяется по папкам проекта, к которым они принадлежат, но восстановленные файлы для существующих объектов не перезаписывают потенциально отредактированные целевые файлы.

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

Я использую частичные классы для тех элементов, для которых я могу, но есть и другие вещи, которые я генерирую, которые не могут использовать частичные классы (например, генерация по умолчаниюEditorTemplate или DisplayTemplate * .ascx file).

У кого-нибудь есть похожие проблемы, которые они решили?

Ответы [ 12 ]

0 голосов
/ 14 декабря 2016

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

Пакетный файл: robocopy-missingfiles.bat

@echo off
echo Copying 
echo      "%1"
echo   to "%2"
echo.
echo Press Cntr+C to abort
Pause
echo.
@echo on
robocopy %1 %2 /Xo /XN /XC /J /SL /S /MT:8 /R:1 /W:1 /V /DCOPY:DAT /ETA /COPY:DATO /FFT /A-:SH /XD $RECYCLE.BIN "System Volume Information"

Пример:

robocopy-missingfiles.bat f:\Working-folder\ E:\Backup-folder\

Выполните тестирование перед реализацией.

0 голосов
/ 17 июня 2016

Простой подход заключается в использовании параметра / MIR для зеркального отображения двух каталогов. В основном он будет копировать только новые файлы в место назначения. В следующей команде замените источник и место назначения путями к вашим папкам, скрипт будет искать любой файл с любым расширением.

robocopy <source directory> <destination directory> *.* /MIR
...