Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Перемещение файлов и удаление дубликатов из source, если файл существует

Ответить
Настройки темы
Любой язык - [решено] Перемещение файлов и удаление дубликатов из source, если файл существует

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день, уважаемые знатоки.

Преамбула:
Есть определенное количество компьютеров, с этих компьютеров ежедневно нужно забирать генерируемые ежедневно файлы. Для этого был использован ftpes сервис, но так как ftp не может быть перенаправлен на сетевой диск, для этих целей был выделен отдельный винт, но и его сейчас оказывается мало.

Теперь фабула:

Как можно реализовать скрипт на PowerShell или BAT/CMD такой функционал:

Необходимо из каталога PC, в котором большое количество подкаталогов и файлов перемещать каждые сутки в сетевую папку PC_Backup.
Для этого изначально был использован простейший BAT-скрипт
Код: Выделить весь код
robocopy E:\PC\home Y:\PC_Backup /minage:5 /move /e
Однако появилась такая проблема, - если в папке PC\home\user1 имеются файлы, которые уже были перемещены в папку PC_Backup\user1, файл остается там же и занимает места на жестком диске.

Как можно перемещать файлы из каталога PC\home в PC_Backup\, и при этом удалять файлы из источника (PC\home), если он уже имеется в PC_Backup\

Спасибо огромное за помощь.

Отправлено: 12:29, 25-09-2017

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


dedajuno, попробуйте использовать параметр (не проверялось):
Цитата:
/IS :: Include Same files.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:50, 25-09-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, Можете немного пояснить, пожалуйста.

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

при попытке протестировать командой
Код: Выделить весь код
robocopy E:\PC\test1 Y:\PC_Backup\test2 /move /e /is
он удаляет исходную папку test1 зачем то. Можно ли этого как-то избежать? не понял зачем он её удаляет... логику не могу понять.

UPD:

Прошу прощения, почитал и как бы иду в разрез со своим сабжем.

Можно ли оставить корневую папку test1, перенеся все файлы и подкаталоги внутри в целевую папку?

Или вообще по изощренному пути пойти и по окончанию операции, создать заново папку test1? :D

Последний раз редактировалось dedajuno, 26-09-2017 в 07:24.


Отправлено: 07:15, 26-09-2017 | #3


Ветеран


Contributor


Сообщения: 2733
Благодарности: 1698

Профиль | Отправить PM | Цитировать


dedajuno,
Код: Выделить весь код
@Echo Off

pushd Z:\In\Box_In 
robocopy Z:\In\Box_In Z:\Out\Box_Out /minage:5 /move /e /IS
popd
Цитата dedajuno:
не понял зачем он её удаляет... логику не могу понять. »
Что хотели, то и получили, это логика Вашей команды: взять папку 1, переместить её в другое место, там дать ей имя 2.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 26-09-2017 в 07:55.

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:43, 26-09-2017 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата dedajuno:
Можно ли оставить корневую папку test1, перенеся все файлы и подкаталоги внутри в целевую папку?
Или вообще по изощренному пути пойти и по окончанию операции, создать заново папку test1? :D »
Ничего не понял. Изложите ещё раз на примере.

Отправлено: 07:49, 26-09-2017 | #5


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, megaloman,

Всё, этот вопрос был решён добавлением маски /minage:5

В силу некоторых причин инфраструктура текущая у меня оказалось такой:
Есть фтп сервер (на базе FileZilla Server) куда ежесуточно сливаются данные с 200 компов (jpeg, avi, webm, log)
Эти данные необходимо хранить в одном месте, так как сетевой диск от NAS не может являться домашним каталогом, приходится сначала качать на сам сервер (E:\PC\) оттуда разбирать через robocopy в сетевой диск Y:\PC_Backup\.
В случае, если указать просто
Код: Выделить весь код
robocopy E:\PC\test1 Y:\PC_Backup\test2 /move /e /is
то он удаляет домашний каталог для фтп (E:\PC), что означает, что дальнейшее копирование прекратится.

В общем решается куда проще))) просто добавить /minage:5 /is

Спасибо, тему можно закрывать.

Отправлено: 08:09, 26-09-2017 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Перемещение файлов и удаление дубликатов из source, если файл существует

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Переименование, если файл с таким именем уже существует... Pshek Скриптовые языки администрирования Windows 15 30-07-2018 15:51
CMD/BAT - создать файл если не существует t0ster Скриптовые языки администрирования Windows 0 22-05-2017 21:25
CMD/BAT - Переименование дубликатов файлов при распаковке из архивов в одну папку truvo Скриптовые языки администрирования Windows 12 10-09-2014 00:38
Delphi - Перемещение и удаление файлов по маске. Putin-mode Программирование и базы данных 1 21-06-2010 12:16
Разное - CloneSpy - автоматическое/полуавтоматическое удаление дубликатов файлов ShaRP Программное обеспечение Windows 0 25-05-2008 19:54




 
Переход