Sinclair83
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Falcon99 Разумеется, что батник нужно положить рядом с dcmf.exe (смотрю не сказал об этом ранее). Файл отчёта "robocopy.log.txt" сформируется также рядом с программой. Дело в том, что сначала увидел (и уже успел реализовать) такое решение Вашей задачи: Если при сравнении двух каталогов(источника и получателя) обнаружатся одноимённые файлы(естественно на одном и том же уровне), то удалить такой файл из каталога-получателя. Таким образом после обработки в каталоге-получателе должны остаться только те файлы, которых нет в каталоге-источнике. Далее переименовываем каталог-получатель, если в нём хоть что-то сталось, и запускаем robocopy. Если изначально и там и там все файлы на месте, то в результате получим пустой каталог-получатель. НО... потом осознал, что это крайне опасный и ненадёжный вариант. Потому, что если внезапно и надолго нарушится связь между компьютерами уже на этапе запуска robocopy, то пользователь может остаться без большого/основного количества документов, а то и вовсе без ничего(сказал об этом выше). И это не есть хорошо. В итоге переписал. И сейчас программа работает именно так как Вы просили, то есть из каталога-источника изымаются(но не далеко, а рядышком в соседний каталог. Но непременно на уровень выше, чем каталог-получатель. Ведь у Вас в параметрах для robocopy задано зеркалирование, ключ "/MIR". Поэтому и на уровень выше. Иначе вся работа на смарку, просто затрётся.) только те файлы, которых нет в каталоге-источнике. Уже хорошо, но не достаточно. Ведь их нужно теперь ещё и обратно перемещать в каталог-приёмник, а потом ещё и копировать на источник. Лишние телодвижения. Короче... когда уже запостил здесь сообщение увидел др. вариант (на мой взгляд более подходящий для данной задачи). А именно, заменить операцию перемещения на операцию копирования одноимённого файла из каталога-приёмника в каталог-источник. Таким образом ещё перед запуском robocopy в каталоге-источнике получим то же число файлов, что и в приёмнике. НО! Это вовсе не значит, что эти оба каталога теперь идентичны и можно не прибегать к помощи robocopy, пренебречь им. Напротив, это категорически/настоятельно рекомендуется сделать(запустить его). Ведь сравнение производится не по содержимому или хотя бы по размеру файлов, а всего лишь на предмет совпадения имён. А ведь файлы в источнике могли редактироваться! И не раз! Не так ли? Вот тут-то в дело и вступает robocopy, который сгладит все шероховатости/неровности/выровняет каталоги по содержимому (освежит файлы в приёмнике). Согласно, теперь уже, эталону (каталогу-источнику). В чём плюс? Не нужно делать третьего действия (возвращать ранее временно перемещённые файлы на свои места). А также нет риска потерять данные при обрыве связи, потому как пользователь в любом случае останется, пусть хоть и с устаревшими, но целыми данными. Что называется "при своих". А что для этого надо? А только и всего, что заменить одну операцию на другую (вместо перемещения сделать копирование). Ну и развернуть поток файлов соответственно на 180 градусов (то есть нацелить его не на временный каталог рядом с приёмником, а на каталог-источник). Получается дёшево и сердито. Надеюсь, что понятно объяснил суть. |