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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление большого количества папок и файлов

Ответить
Настройки темы
CMD/BAT - Удаление большого количества папок и файлов

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


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

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


Изменения
Автор: finderhd
Дата: 12-02-2020
Доброго времени суток!

Имеется каталог с большим количеством папок, подпапок и файлов.

Структура следующая:

Folder_main\YYYYMMDD\Folder1\
далее подкаталоги
FolderXXX\1.dat
FolderYYY\1.dat
FolderZZZ\1.dat

Folder_main\YYYYMMDD\Folder2\
далее подкаталоги
FolderXXX\1.dat
FolderYYY\1.dat
FolderZZZ\1.dat

Folder_main - корневая, главная папка

... и т.д.

может доходить до сотней подкаталогов типа FolderXXX, а соответственно и файлов в каждой из подпапок.
Каждый файл занимает от нескольких байт, то нескольких килобайт (не более 10kb, где-то). Но их количество (как папок так и соответственно, файлов) очень большое, несколько миллионов. Почти за 10 лет. Каталог ежедневно, в одно определенное время, пополняется по принципу - новая папка - новая подпапка - новый файл.
Нужно удалить все старые папки вместе с файлами, не трогая последние три.

Пытался сделать это через Forfiles, но команда удаляет только файлы. Пытался добавить rmdir /s /q но бесполезно, выдает в ошибку о том, что путь не найден и типа того.

FORFILES /p D:\Folder_main\ /s /m *dat* /d -2000 /c "CMD /c del /Q @FILE"

2000 это я указал, чтобы не сразу весь объем...

Думал про вариант с RD, заранее скопировав три главных последних каталога (YYYYMMDD), но т.к. файлов и подпапок очень много, то такой вариант подойдет лишь разово. Да и неизвестно сколько по времени он будет удалять, боюсь, всю память сожрет. А нужно этот процесс поставить на поток, чтобы ежедневно удалял файлы и каталоги за минусом в три дня. Также, не хотелось бы грузить сервер во время удаления, поэтому предполагается удаление такого большого количества файлов и папок(подпапок) частями.

Можно конечно просто запустить в планировщик батник в выходные, и за несколько недель почистить, а папки постепенно удалить вручную, через тот же total, или удалить через rd, как я упомянул выше, т.к. в принципе последние три дня они не критичны.

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

Отправлено: 11:19, 12-02-2020

 

Ветеран


Contributor


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

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


Busla, Обратите внимание, я адресовал Вам пост и излагал мысли в рамках деловой этики. Должен заметить, у меня за спиной более десятка лет успешного обслуживания серьезной информационной системы. Вы не привели ни одного внятного довода моей неправоты, не предложили своего, на Ваш взгляд, правильного решения. Тролльте, если Вам так нравится. Но далее без меня.

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


Отправлено: 13:55, 18-02-2020 | #41



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

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


Аватара для YuS_2

Ветеран


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

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


Цитата Busla:
нет »
Слишком категорично. Вы лучше автора знаете, что ему нужно?
Перечитайте топик. Тут неоднократно пытались уточнить и получить четкие ответы.
Из всех полученных ответов от автора следует, что ему требуется оставить три последних созданных каталога с привязкой к имени каталога YYYYMMDD и никакой привязки к реальной дате создания/изменения в запросе нет.

Цитата Busla:
а автор хочет »
то, что автор хочет ... здесь можно надергать массу противоречивых цитат. У него просто не получается однозначно сформулировать задачу. Но уточняющими вопросами, здесь уже выяснили задачу:
Цитата finderhd:
Т.е. заходим в Folder_main и видим, что всегда там три каталога вида YYYYMMDD за вчерашний день, позавчерашний и позапозавчерашний. Всё. »

Цитата Busla:
стоит писать это на PowerShell »
в топике уже предлагалось, но:
Цитата finderhd:
PS. С PowerShell вообще не знаком. »

-------
scio me nihil scire

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

Отправлено: 14:36, 18-02-2020 | #42


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


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

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


Цитата Busla:
т.е. чтобы в понедельник у него остался только пятничный каталог »
Нет, видимо я неправильно выразился. За минусом "3 дней" имелись в виду папки вида YYYYMMDD, о чем я делал акцент. Но надо было конечно проще поставить задачу - за минусом трех папок. Здесь уже я виноват, что не конкретизировал сразу, но я позже всеравно предоставил более подробные примеры, чтобы отсечь другие вопросы.

Цитата Busla:
может означать, что каталоги за СБ и ВС формируются в ПН
В общем, вы и близко не понимаете бизнес-процесс, но готовы накостылять непонятно что и свалить в туман »
Я же ранее очень подробно приводил пример и структуру каталогов. Я как раз всё понимаю, а вы уже придумываете с воздуха, так как вам показалось. Говорилось же, что каталог формируется за несколько минут до 00:00.
А если это вы адресовали megaloman, то я категорически не соглашусь. Именно этот уважаемый форумчанин предложил самое лучшее решение задачи, предоставив решение в виде самого простого скрипта, без анализа дат, вложенных файлов и прочего: http://forum.oszone.net/post-2909269-4.html
И этот скрипт работает идеально, в планировщике запускается и стопится как надо. Я его проверил уже на тестовом стенде по типу "поставить на поток". Единственное, что я не проверял его, так это на основном, т.к. прошлая попытка удалить большое количество (пусть даже частями) файлов привела к жору памяти. Но можно запланировать его запуск в выходной день. Я не могу эксперементировать с работающим основным сервером, а воссоздать это на тесте невозможно, т.к. там такого количества папок и файлов нет. Даже попытка их скопировать, может загрузить основной сервер, т.к. файлов миллионы. От них просто надо избавиться и забыть про них навсегда, добавив ежедневный запуск скрипта выше, ночью в планировщике.

Последний раз редактировалось finderhd, 20-02-2020 в 11:59.


Отправлено: 11:21, 20-02-2020 | #43


Ветеран


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

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


Цитата finderhd:
самое лучшее решение задачи, предоставив решение в виде самого простого скрипта, без анализа дат »
у каждой сколько-нибудь сложной задачи есть простое очевидное неправильное решение

Вы по-русски не можете не то, что сформулировать задачу, а даже выбрать из предложенных формулировок, но почему-то берёте на себя смелость утверждать, что код работает идеально. Смешно.

Цитата finderhd:
Я как раз всё понимаю, а вы уже придумываете с воздуха, так как вам показалось. »
Это вам показалось, а я просто озвучил неоднозначные моменты, о которых никто не задумывался.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:20, 20-02-2020 | #44


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


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

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


Цитата Busla:
Вы по-русски не можете не то, что сформулировать задачу, а даже выбрать из предложенных формулировок, но почему-то берёте на себя смелость утверждать, что код работает идеально. Смешно. »
Так я не раз уже выше сказал - последние три папки вида YYYYMMDD. Как еще сформулировать нужно было? Основной упор делался на то, как автоматом удалить большое количество файлов. А то что упомянутый выше скрипт работает и выполняет задачу, уже проверил. Понятно, что ничего идеального нет, но скрипт отрабатывает свою задачу, я проверяю это ежедневно. Просто на тестовом сервере объем не тот, но в плане ежедневной обработки скрипт отлично работает.

Отправлено: 12:58, 20-02-2020 | #45


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


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

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


Цитата finderhd:
ничего идеального нет »
Но есть более идельно или менее. Как я понял, скрипт создает нагрузку, и в вашем случае было бы не лишним ее регулировать. Лень разбираться в скрипте megaloman'а, но могу описать алгоритм:
1)простой: перед командой удаления нужно поставить проверку переменной - маркера загруженности. Допустим маркер=0 (перегруз) - ожидание, маркер=1 - выполнение. Под "ожиданием" я понимаю "бесконечный" цикл с паузой внури и прерывающийся по условию (маркеру загруженности). Маркер загруженности задает подпрограмма, которая запускается параллельно основному циклу и должна периодически проверять загруженность озу и цп и исходя из параметров менять маркер. Допустим рабоча память > 80% - маркер=0
2)более продвинутый: подпрограмма проверяет загруженность цп и озу и на основе этого увеличивает или уменьшает паузу которую основной цикл использует перед удалением..

Отправлено: 15:06, 20-02-2020 | #46


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


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

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


Цитата vombat2:
Но есть более идельно или менее. Как я понял, скрипт создает нагрузку, и в вашем случае было бы не лишним ее регулировать. Лень разбираться в скрипте megaloman'а, но могу описать алгоритм:
1)простой: перед командой удаления нужно поставить проверку переменной - маркера загруженности. Допустим маркер=0 (перегруз) - ожидание, маркер=1 - выполнение. Под "ожиданием" я понимаю "бесконечный" цикл с паузой внури и прерывающийся по условию (маркеру загруженности). Маркер загруженности задает подпрограмма, которая запускается параллельно основному циклу и должна периодически проверять загруженность озу и цп и исходя из параметров менять маркер. Допустим рабоча память > 80% - маркер=0
2)более продвинутый: подпрограмма проверяет загруженность цп и озу и на основе этого увеличивает или уменьшает паузу которую основной цикл использует перед удалением.. »
Ну если бы была такая софтинка готова. Но вот я что-то не нашел. Находил Remove Emty Directory, которая удаляет пустые папки (т.к. изначально я удалял через forfiles только файлы), но делала она это крайне медленно.
Поэтому вопрос по удалению без нагрузки на систему, пока остается открытым Вариант с планировщиком на удаление большого количества не подходит. Надо контролировать ситуацию. Вариант с фаром что предлагали ранее, тоже, слишком много файлов... Пока потихоньку удаляю руками через Total. Осталось еще почти тысяча каталогов.

Отправлено: 11:00, 21-02-2020 | #47


Ветеран


Contributor


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

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


finderhd,
Цитата:
Пока потихоньку удаляю руками через Total. Осталось еще почти тысяча каталогов.
да возьмите Вы мой скрипт, поставьте, допустим, кол-во каталогов для удаления =100 и запускайте его руками сколько нужно раз. Контролируйте нагрузку на сервер. Всё быстрее чем руками в тотале. Либо как предложил Iska Только перемещать за раз не все папки для удаления, а порциями. И применять команду rd. Но руками, имхо, это делать стремновато, надо быть аккуратным, одно неверное движение - и ты отец. Поэтому, да возьмите ... (у попа была собака ...)

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


Отправлено: 11:19, 21-02-2020 | #48


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


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

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


Цитата megaloman:
да возьмите Вы мой скрипт, поставьте, допустим, кол-во каталогов для удаления =100 »
Это который самый первый?

Отправлено: 12:39, 21-02-2020 | #49


Ветеран


Contributor


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

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


Вот этот

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


Отправлено: 13:26, 21-02-2020 | #50



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление большого количества папок и файлов

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Проблема с просмотром большого количества файлов в explorer Pikki-pikki Microsoft Windows 2000/XP 7 19-06-2013 21:36
Система - [решено] проверка целостности большого количества файлов daneeall Программное обеспечение Windows 7 08-02-2013 16:25
Система - Подскажите программу для копирования / перемещения большого количества мелких файлов kiripanda Программное обеспечение Windows 13 10-08-2010 21:00
Интерфейс - [решено] Переименование большого количества файлов 7human7 Microsoft Windows 2000/XP 7 22-11-2008 09:48
Flash - Проблема копирования большого количества файлов в корневой каталог флешки SANIOK_AV Накопители (SSD, HDD, USB Flash) 2 05-09-2008 11:43




 
Переход