Скопируйте файлы, которых нет в файле журнала, в папку

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

Вот что я думаю:

-Сценарий для запуска каждую минуту -Исходная папка -Папка назначения -Файл журнала записывает файл, который был скопирован

Процесс:

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

-Если файл существует в файле журнала, НЕ КОПИРОВАТЬ

-Если файл НЕ СУЩЕСТВУЕТ в файле журнала, скопируйте в папку назначения, запишите путь к файлу/имя файла в файл журнала.

-Перейти к следующему файлу в каталоге

Это то, что у меня есть, но у меня проблемы с findstr, и я не совсем уверен, что это лучший способ сделать это.

@echo off
:start

for /r "C:\Source" %%i in (*) do (

    echo --------------------------------------
    echo Searching for: %%i
    type log.txt | findstr /L "%%i"

    if %ERRORLEVEL% EQU 1 ( 
    echo NOT FOUND
    goto copyfile 
    )
    if %ERRORLEVEL% EQU 0 ( 
        echo FOUND
    )
echo ------------------------------------------

:copyfile 
echo ------------------------------------------------------------------
echo Copy %%i
copy "%%i" C:\Destination
echo Writing to log file: %%i
echo -------------------------------------------------------------------
echo %%i >> log.txt

)

Я был бы очень признателен за понимание. Спасибо всем за ваше время.


person Drew    schedule 04.03.2014    source источник
comment
Вы пытаетесь воспроизвести в пакетном коде часть функций robocopy. Есть ли причина не использовать его?   -  person MC ND    schedule 05.03.2014
comment
Вы, сэр, заслуживаете трофея!! Это идеально и именно то, что мне нужно. 1 строка кода, чтобы сделать все это!! Также использовал NSSM, чтобы обернуть летучую мышь как сервис. Спасибо за ваше понимание!   -  person Drew    schedule 05.03.2014


Ответы (1)


Как указал MC ND, RoboCopy — это ответ, и он, безусловно, сработал для меня.

robocopy source-path destination-path /r:30 /w:20 /mon:1 /mot:1 /log+: path-to-log

/r:30 — 30 попыток копирования в случае ошибки копирования
/w:20 — ожидание 20 секунд перед повторной попыткой копирования
/mon:1 — отслеживание исходного каталога на предмет изменения 1 файла
/mot :1 – Ожидание в течение 1 минуты перед проверкой изменений
/log+: – Добавление в файл журнала

Чтобы увидеть больше информации о Robocopy, введите команду robocopy /?

person Drew    schedule 05.03.2014