Существует ли программа командной строки, которая может копировать файлы, которые существуют в одной папке, но не существуют в другой , принимая во внимание, что:

  1. Файл в папке назначения может быть переименован, и я не хочу дубликатов
  2. Файлы добавляются в исходную папку в любое время и имеют произвольно созданные, измененные и доступные метки времени.

Я пытался использовать robocopy, но есть две проблемы:

  • robocopy /mir будет копировать файлы, но если файл в папке назначения был переименован (пункт # 1), то при следующем запуске оригинальное имя файла будет скопировано снова.
  • robocopy /maxage:1 будет копировать файлы в последний день, но так как добавленные файлы имеют случайные временные метки (точка # 2), многие новые файлы не будут скопированы, так как они старше этого.

Есть ли что-то еще, что может делать то, что я хочу?

1 ответ1

2

Вы указали это условие:

Файл в папке назначения может быть переименован, и я не хочу дубликатов

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

Вам нужно закатать рукава и начать писать сценарий PowerShell, который создает хэши SHA-1 из всех файлов (как в источнике, так и в месте назначения), сравнивает хэши в источнике и месте назначения и, наконец, передает файлы с уникальными хэши.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .