Autoit FileCopy для обновления только новых файлов

Я пытаюсь скопировать файлы из папки с помощью

FileCopy($Source & "*.*,$Dest",8)

Так как исходная папка содержит огромные файлы и каждый час добавляются новые файлы, я хотел копировать только новые файлы (нет в целевом каталоге)

Я не хочу использовать опцию overwrite(9), чтобы избежать нежелательного копирования.

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

Есть ли другая встроенная функция, которая просто пропускает перезапись и копирует новые файлы???

Заранее спасибо.

1 ответ

Решение

Я предполагаю, что вы хотите это для резервного копирования.
Один вкладыш в autoit будет:

Runwait(@ComSpec & " /c " & "xcopy " & '"' & $source & '"' & ' "' & $destination & '"' & " /E /C /D /Y","",@SW_HIDE)
  • Не будет перезаписывать, если исходный файл не новее (/D).
  • Создаст структуру каталогов, даже пустые (/E).
  • Будет копировать скрытые файлы (/H).
  • Не буду останавливаться на ошибках (/C).

Например:

$source = "D:\PROGRAMING BRE !!!"
$destination = "M:\PROGRAMING BRE !!!"
$timer = TimerInit()

Runwait(@ComSpec & " /c " & "xcopy " & '"' & $source & '"' & ' "' & $destination & '"' & " /E /C /D /Y /H /J","",@SW_HIDE)

MsgBox(0,"","Done in " & TimerDiff($timer)/1000 & " seconds!")

Хотя это не чистый Autoit, а реализация XCOPY, он отлично справляется со своей задачей.

Это молниеносно!

1 ГБ 18,020 файлов, 2,224 папки 38 секунд!

Чтобы перепроверить все эти файлы и добавить новые 2sec!

Другие вопросы по тегам