Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Удаление большого количества папок и файлов (http://forum.oszone.net/showthread.php?t=344035)

finderhd 12-02-2020 11:19 2909223

Удаление большого количества папок и файлов
 
Доброго времени суток!

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

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

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, как я упомянул выше, т.к. в принципе последние три дня они не критичны.

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

Ageron 12-02-2020 13:00 2909238

@file - возвращает имя файла.

а вам надо указать

@path - возвращает полный путь к файлу.

finderhd 12-02-2020 13:42 2909249

Цитата:

Цитата Ageron
@file - возвращает имя файла.
а вам надо указать
@path - возвращает полный путь к файлу. »

Не совсем понятно, что Вы имели в виду? Поставить в конце команды @path вместо @file ?
Попробовал указать, ничего не изменилось.

megaloman 12-02-2020 15:27 2909269

Цитата:

Цитата finderhd
Folder_main\YYYYMMDD\ »

Цитата:

Цитата finderhd
Нужно удалить все старые папки вместе с файлами, не трогая последние три. »

Если я правильно понял, надо оставить нетронутыми последние 3 папки, допустим:
Folder_main\20200210\
Folder_main\20200205\
Folder_main\20200203\
А предыдущие:
Folder_main\20200202\
Folder_main\20200201\
Folder_main\20200128\
Folder_main\20191231\
.......
удалить.
Код:

@Echo Off
cls
        Set "BoxIn=Z:\Box_In\Folder_Main"
        Set "Mask=2???????"
        Set /A Skip=3

        FOR /F "usebackq Skip=%Skip% delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:D /O:-N`) Do Call Echo %%Time%% "%BoxIn%\%%f" &Rd /S /Q "%BoxIn%\%%f"
rem pause
Exit /B 0

ИМХО, это максимально быстрый вариант, не думаю, что стОит разбивать этот процесс на части, при такой постановке задачи опускаться до работы с подпапками и удаления файлов не комильфо - преступно медленно.Можете поставить этот скрипт в планировщик и запускать его хоть сто раз в день. Гарантировано останутся три созданные последними папки.
Вставил визуальный контроль процесса, если это не надо - уберите выделенное красным цветом. ОцЕните скорость выполнения - если посчитаете, что всё-таки надо процесс разбить - пишите.

Iska 13-02-2020 01:03 2909343

Цитата:

Цитата megaloman
не думаю, что стОит разбивать этот процесс на части, при такой постановке задачи опускаться до работы с подпапками и удаления файлов не комильфо - преступно медленно. »

Да нет, нормально будет, хоть спускаясь рекурсией внутрь по дереву (я бы так и делал — спускался вниз рекурсией, удалял старые файлы, а на возврате из рекурсии вверх проверял каталог на пустоту и, если это так — тогда удалял бы его).

P.S. Первый раз можно и «ручками» удалить :).

megaloman 13-02-2020 12:11 2909387

Iska, в чём смысл? Вижу цель - оставить несколько последних по датам в имени папок. Счюпать каждый файл - никакого смысла.
Если уж очень хочется, то и рекурсия - не оптимум. ИМХО эффективнее сделать dir папок и конвейером на обратную сортировку. Убивать в папке файлы и после удаления файлов удалять папку без /s /q.
Но это по времени не знаю на сколько порядков медленнее, чем удалять сразу старые папки.
Эх, не хватает оценки, сколько тратится времени на удаление каждого дня.
Если принять, что за 10 лет создалось 3600 папок по дням и если каждая папка удаляется 1сек, то это уже 1 час.
Кстати, echo в моём коде наверное может хорошо замедлить процесс.

DJ Mogarych 13-02-2020 16:33 2909419

finderhd, а не хотите отталкиваться от даты создания файла вместо "трёх последних папок"?

megaloman 13-02-2020 17:42 2909428

Вот вариант с ограничением количества удаленных папкодней
Код:

@Echo Off
cls
        Set "BoxIn=Z:\Box_In\Folder_Main"
        Set "Mask=2???????"
        Set /A Skip=3

        Set /A MaxCount=365

        FOR /F "usebackq Skip=%Skip% delims=" %%d IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:D /O:-N`) Do Set /A MaxDay=%%~nd &GoTo :Begin
       
        :Begin
        Set /A iCount=0
        FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:D /O:N`) Do (
                If %MaxDay% GEQ %%f (
                        Rd /S /Q "%BoxIn%\%%f"
                        Call :Counter || GoTo :End
                )
        )
        :End
rem pause
Exit /B 0

:Counter
        Set /A iCount+=1
        If %iCount% EQU %MaxCount% Exit /B 1
Exit /B 0

Set "BoxIn=Z:\Box_In\Folder_Main" - здесь пропишИте свой путь
Set /A Skip=3 -здесь количество дней, которые нужно оставить
Set /A MaxCount=365 -здесь количество дней (не более), удаляемых за один запуск батника.
Батник можно поместить в планировщик, запускать хоть раз в день, хоть несколько (надо при этом быть уверенным, что предыдущий запуск уже успел отработать).
При указанных параметрах и если задание в планировщике запускать раз в сутки, за 10 дней 10 лет Вы убьете и в последующем будут всегда оставаться три последних дня.


Iska 13-02-2020 18:35 2909439

Цитата:

Цитата megaloman
Iska, в чём смысл? »

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

megaloman 13-02-2020 19:00 2909444

Цитата:

Цитата Iska
Когда внутри могут оказаться файлы возрастом много младше каталогов, например. »

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

alpap 13-02-2020 23:21 2909462

Цитата:

Цитата megaloman
порядок хранения - его нет »

а можно сделать
- создать отдельный логический раздел
- сохранять из этого раздела последние три (> ...) папки/подпапки/файла на рабочий логический раздел
- удалять вышесозданные последние три (> ...) папки/подпапки/файла по прошествии какого-то времени
- форматировать отдельный логический раздел когда накопилось более чем достаточно ну или по желанию

finderhd 14-02-2020 10:43 2909492

Цитата:

Цитата megaloman
Если я правильно понял, надо оставить нетронутыми последние 3 папки, допустим:
Folder_main\20200210\
Folder_main\20200205\
Folder_main\20200203\
А предыдущие:
Folder_main\20200202\
Folder_main\20200201\
Folder_main\20200128\
Folder_main\20191231\ »

Ну да, новые папки создаются в формате YYYYMMDD и нужно удалять все папки, подпапки и файлы внутри подпапок, старше 3-х дней. При этом замечу, что файлы находятся только в подпапках и их иерархия не превышает три каталога, т.е:
YYYYMMDD/Folder1/Subfolder1/file.dat
YYYYMMDD/Folder2/Subfolder2/file.dat
YYYYMMDD/Folder3/Subfolder3/file.dat
и т.д.


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

cd D:\Folder_main
forfiles /p "C:\Folder_main" /S /D -2000 /C "cmd /c del /f /a /q @file"
:repeat
for /f "tokens=*" %%i in (' dir /b /s /ad "C:\Folder_main" ') do 2>nul rd /q "%%i" && goto:repeat

Цитата:

Цитата DJ Mogarych
а не хотите отталкиваться от даты создания файла вместо "трёх последних папок"? »

Мне без разницы. Главное чтобы скрипт быстро (относительно, так сказать) удалил большое количество папок, подпапок и файлов за почти 10 лет. Я сомневаюсь, что какой либо скрипт управится за 1-2 дня выходных, поэтому и предлагал чистку разбить на несколько дней. В течении буднео дня не хотелось бы запускать такой скрипт, если он будет жрать оперативку или место на диске. Также идеально было бы, чтобы можно было отследить его обработку, что-то вроде результата в конце, сколько было удалено или т.п. но это не критично.

Цитата:

Цитата alpap
а можно сделать
- создать отдельный логический раздел
- сохранять из этого раздела последние три (> ...) папки/подпапки/файла на рабочий логический раздел
- удалять вышесозданные последние три (> ...) папки/подпапки/файла по прошествии какого-то времени
- форматировать отдельный логический раздел когда накопилось более чем достаточно ну или по желанию »

Этот вариант исключен, т.к. я не являюсь админом физического сервера, более того, у меня нет на это подобных полномочий.

Цитата:

Цитата megaloman
Вот вариант с ограничением количества удаленных папкодней »

Спасибо, попробовал на тестовом сервере, поставил:

Set /A Skip=2000
Set /A MaxCount=2000

выдает ошибку: %f unexpected at this time

Я вот думаю, если просто оставить батник на выходные, справится он с удалением всего, за минусом трех дней? И как проследить что он точно отработал, помимо history в планировщике? Или лучше лишнюю нагрузку не создавать добавлением логирования? Или не заморачиваться, а просто как Вы посоветовали с теми параметрами skip и MaxCount, поставить батник в планировщик на ночь и ждать 10 дней... попутно проверяя его. Либо, увеличить MaxCount скажем на 2000 и поставить в планировщик по выходным. Спешки в этом плане нет, главное чтобы работа батника не отправила сервер в ступор.

upd. Поставил

Set /A Skip=3
Set /A MaxCount=2000

подложил каталоги за 2011 год, и за 2017. Батник их удалил, вместе с файлами. Возможно конечно, что папки только по имени такие, а по дате они свежие. Но по-другому протестить нельзя, сразу это делать на главном серваке не решусь пока.

finderhd 14-02-2020 11:32 2909500

Цитата:

Цитата megaloman
Если принять, что за 10 лет создалось 3600 папок по дням и если каждая папка удаляется 1сек, то это уже 1 час.
Кстати, echo в моём коде наверное может хорошо замедлить процесс. »

Я примерно могу подсказать по количеству.

Первая (главная) папка - одна, её ни в коем случае трогать нельзя.
Следующие папки (подпапки), находятся в главной папке, имеют вид YYYYMMDD т.е. согласно дате создания и их более 2180 (пару другую десятков я ранее удалял руками, но запарился это делать, ибо 10 папок с кучей подпапок и файлов через тотал удалялись в среднем примерно за 5-7 сек. при этом, по диспетчеру сразу видно было как возрастала нагрузка на оперативку). Ну и каждый день каталог пополняется новым количеством папок и файлов.
Далее идут подпапки с разными названиями, и в каждой из них один маленький файл (от нескольких байт, до нескольких кб) с одинаковым названием.

Т.е. например, вот так выглядит один из путей:
D:\Reports\Folder_main\20110101\Folder1\Subfolder1\file.dat

Так вот, этих подпапок (subfolder1), могут быть миллионы. Количество folder1 в каждой папке вида YYYYMMDD 49 штук. А вот подпапок subfolder1 может быть от одной, двух то нескольких сотен. Не поленился и зашел во все 49 папок folder1. Среднее количество в каждой штук 50 подпапок, но попадалась одна папка с тремя сотнями подпапок и штук 7 папок с более с100 подпапок. Т.е. если даже взять по среднему так сказать, 50 подпапок, то получаем порядка 105 тыс. папок в каждой folder1. Получаем: 105000х49=5 млн.145 тысяч папок и соответственно файлов. ) Конечно это не точно и могут быть погрешности как в минус, так и в плюс.

Если попытаться их сосчитать через Свойства, система начинает загибаться через пару минут, ибо сильно отжирается оперативка. Больше я сосчитать их не пытался )

DJ Mogarych 14-02-2020 12:34 2909507

Цитата:

Цитата finderhd
D:\Reports\Folder_main\20110101\Folder1\Subfolder1\file.dat »

Очень запутано всё как-то.

1. Какие три каталога надо оставить? Folder1 или Subfolder1?
2. Каталог YYYYMMDD, если старый, будет удаляться?
3. Если на пункт 2 ответ положительный, то насколько каталог YYYYMMDD должен быть старым для удаления?

Цитата:

Цитата finderhd
через тотал удалялись в среднем примерно за 5-7 сек. при этом, по диспетчеру сразу видно было как возрастала нагрузка на оперативку »

Через графический интерфейс это, естественно, весьма долго и ресурсоёмко, скрипт будет работать в десятки раз быстрее.

megaloman 14-02-2020 13:33 2909526

finderhd,
Вот структура каталогов, как я себе их представляю по Вашему изложению
Код:

Folder_main\
        20200201\
                Folder1\
                        FolderXXX\1.dat
                        FolderYYY\1.dat
                        FolderZZZ\1.dat
                Folder2\
                        FolderXXX\1.dat
                        FolderYYY\1.dat
                        FolderZZZ\1.dat
                Folder3\
                        FolderXXX\1.dat
                        FolderYYY\1.dat
                        FolderZZZ\1.dat
Folder_main\
        20200202\
                Folder1\
                        FolderXXX\1.dat
                        FolderYYY\1.dat
                        FolderZZZ\1.dat
                Folder2\
                        FolderXXX\1.dat
                        FolderYYY\1.dat
                        FolderZZZ\1.dat
                Folder3\
                        FolderXXX\1.dat
                        FolderYYY\1.dat
                        FolderZZZ\1.dat
Folder_main\
        20200203\
                Folder1\
                        FolderXXX\1.dat
                        FolderYYY\1.dat
                        FolderZZZ\1.dat
                Folder2\
                        FolderXXX\1.dat
                        FolderYYY\1.dat
                        FolderZZZ\1.dat
                Folder3\
                        FolderXXX\1.dat
                        FolderYYY\1.dat
                        FolderZZZ\1.dat
.......................................

Папок с датами (выделено красным) за десять лет никак не более 365*10+2=3652
Сколько подпапок, файлов в этих папках скрипту глубоко фиолетово, я рассуждаю только с точки зрения количества красных папок за день
Цитата:

Цитата finderhd
Я вот думаю, если просто оставить батник на выходные, справится он с удалением всего, за минусом трех дней? »

Понятия не имею. Протестируйте, сколько времени занимает удаление, например, 50 дней. Посчитайте пропорцией, сколько времени займет удаление всего. Ответите на свой вопрос.
Цитата:

Цитата finderhd
Set /A Skip=2000
Set /A MaxCount=2000
выдает ошибку: %f unexpected at this time »

Естественно, Вы тестировали скрипт на количестве папок менее того (2000) чем хотите оставить. Ранее речь шла о 3. Всегда можно придумать данные, способные одурачить любую программу. :) Сейчас поставил от таких данных защиту.
Вот вариант с выдачей времени исполнения
Код:

@Echo Off
cls
        Set "BoxIn=Z:\Box_In\Folder_Main"
        Set "Mask=2???????"
        Set /A Skip=3

        Set /A MaxCount=50

Echo %Date% %Time% === Begin
        Set /A MaxDay=0

        FOR /F "usebackq Skip=%Skip% delims=" %%d IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:D /O:-N`) Do Set /A MaxDay=%%~nd &GoTo :Begin
       
        :Begin
        Set /A iCount=0
        FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:D /O:N`) Do (
                If %MaxDay% GEQ %%f (
                        Rd /S /Q "%BoxIn%\%%f"
                        Call :Counter || GoTo :End
                )
        )
        :End
Echo %Date% %Time%  === %MaxCount% folders removed maximum
pause

Exit /B 0

:Counter
        Set /A iCount+=1
        If %iCount% EQU %MaxCount% Exit /B 1
Exit /B 0

Оцените время и принимайте решение. Если время приемлемое, поставьте MaxCount заведомо больше, чем имеется,например: Set /A MaxCount=5000
Три последних дня (если укажете 3) естественно останутся.
Первый скрипт попроще и отработает быстрее. Естественно, если не хотите наблюдать за процессом, Call Echo %%Time%% "%BoxIn%\%%f" & можно убрать.

Не думаю, что будет как-то отжираться, как Вы выразились, оперативка. Не знаю, что такое сервер, но, если там Raid, то удаление проделается очень быстро. Основная нагрузка на диск.

YuS_2 14-02-2020 14:36 2909543

Цитата:

Цитата finderhd
Нужно удалить все старые папки вместе с файлами, не трогая последние три. »

Цитата:

Цитата finderhd
три главных последних каталога (YYYYMMDD) »

Цитата:

Цитата finderhd
Ну да, новые папки создаются в формате YYYYMMDD и нужно удалять все папки, подпапки и файлы внутри подпапок, старше 3-х дней. »

Так, вот читаю топик и никакой ясности в задаче не вижу.
finderhd, Вам необходимо собраться с мыслями, откинуть "лишнюю" информацию и четко ответить на вопросы:
1. Удаляются подкаталоги первого уровня вложенности от основного (которые имеют формат YYYYMMDD)?
2. Имеются ли в основном каталоге другие подкаталоги с форматом имени отличным от YYYYMMDD?
3. Дата создания файлов, находящихся в подкаталогах от этих удаляемых каталогов, не имеет значения или имеет?
4. Так к чему относится это: "старше 3-х дней"? К каталогам с форматом YYYYMMDD или к файлам, или к чему-то ещё? Если к каталогам, то остаются три последних или таки младше трех дней от текущей даты?

А пока, предварительный скрипт powershell (с учетом того, что в основном каталоге нет подкаталогов с именами, отличающимися от формата YYYYMMDD):
Код:

#requires -v 3.0
$fmain='D:\Reports\Folder_main'
dir $fmain -dir|sort -d|select -skip 3|del -rec -force

- удалены будут все подкаталоги от основного, с форматом имени YYYYMMDD, кроме трех последних, имеющих в наименовании самую "свежую" дату.

finderhd 14-02-2020 15:09 2909551

Цитата:

Цитата DJ Mogarych
Очень запутано всё как-то.
1. Какие три каталога надо оставить? Folder1 или Subfolder1?
2. Каталог YYYYMMDD, если старый, будет удаляться?
3. Если на пункт 2 ответ положительный, то насколько каталог YYYYMMDD должен быть старым для удаления? »

Удаляться должны старые каталоги вида YYYYMMDD и вложенные в него подпапки с файлами. За минусом 3-х дней.

Цитата:

Цитата DJ Mogarych
Через графический интерфейс это, естественно, весьма долго и ресурсоёмко, скрипт будет работать в десятки раз быстрее. »

Я также скачивал софтинку одну - красиво, наглядно, но жутко долго. Даже пустые папки и подпапки удаляет очень долго.

finderhd 14-02-2020 15:38 2909555

Цитата:

Цитата megaloman
Вот структура каталогов, как я себе их представляю по Вашему изложению »

Folder_Main единственная главная папка, с единственным именем. Естественно, она не изначальная по типу C:\Главная папка, но именно она содержит в себе подпапки которые нужно удалять.
Т.е. иерархия скорее такая:
Скрытый текст

Folder_main\
20200201\
Folder1\
FolderXXX\1.dat
FolderYYY\1.dat
FolderZZZ\1.dat
Folder2\
FolderXXX\1.dat
FolderYYY\1.dat
FolderZZZ\1.dat
Folder3\
FolderXXX\1.dat
FolderYYY\1.dat
FolderZZZ\1.dat
20200202\
Folder1\
FolderXXX\1.dat
FolderYYY\1.dat
FolderZZZ\1.dat
Folder2\
FolderXXX\1.dat
FolderYYY\1.dat
FolderZZZ\1.dat
Folder3\
FolderXXX\1.dat
FolderYYY\1.dat
FolderZZZ\1.dat

Set /A Skip=2000 - здесь я указал 2000 т.к. хотел, чтобы скрипт удалил все папки, которые старше 6 лет примерно. Т.е. 2000/365=5,4 года .
Set /A MaxCount=2000 - вот здесь не понятно, зачем это условие, если есть условие выше. Какое-то противоречие получается.

Set /A Skip=3 -здесь количество дней, которые нужно оставить - вот я и оставил 2000, чтобы учесть момент, что батник будет выполнять долго, если оставить 3 дня. А если за минусом 2000 дней, то батник можно спокойно оставить на работу в выходные.

Цитата:

Цитата megaloman
Не думаю, что будет как-то отжираться, как Вы выразились, оперативка. Не знаю, что такое сервер, но, если там Raid, то удаление проделается очень быстро. Основная нагрузка на диск. »

Хорошо если так, но лишняя нагрузка на диск в течении будних дней недопустима. Вопрос в том, насколько эта нагрузка будет критичной, не повести ли она сервер (под сервером имеется в виду физический сервер типа HP Proliant).

Цитата:

Цитата YuS_2
Так, вот читаю топик и никакой ясности в задаче не вижу.
finderhd, Вам необходимо собраться с мыслями, откинуть "лишнюю" информацию и четко ответить на вопросы:
1. Удаляются подкаталоги первого уровня вложенности от основного (которые имеют формат YYYYMMDD)?
2. Имеются ли в основном каталоге другие подкаталоги с форматом имени отличным от YYYYMMDD?
3. Дата создания файлов, находящихся в подкаталогах от этих удаляемых каталогов, не имеет значения или имеет?
4. Так к чему относится это: "старше 3-х дней"? К каталогам с форматом YYYYMMDD или к файлам, или к чему-то ещё? Если к каталогам, то остаются три последних или таки младше трех дней от текущей даты? »

Всё очень просто, с мыслями давно определился, но повторю, если не правильно ранее выразилися.

Решить данную задачу можно двумя, видимыми мне способами:

1. Удалить старые подпапки с файлами частями, за несколько выходных.
2. Удалить за один раз.
Первый вариант предпочтительнее, на случай, "если что-то пойдет не так". Сервер (физически это комп) имеет высокую критичность в течении дня, и до глубокой ночи. На выходных на нем ничего не крутится, поэтому ресурсов на обработку к.л. заданий достаточно.
Второй вариант подойдет только если батник управится за пару выходных. Но учитывая огромное количество подпапок и файлов, узнать сколько это займет, невозможно. Но можно конечно прикинуть, как подсказали megaloman выше.

Теперь отвечу по вашим вопросам:

1. Да
2. Я про структуру папок приводил формат выше. Повторюсь еще раз:
D:\Reports\Folder_main\20110101\Folder1\Subfolder1\file.dat
D:\Reports\Folder_main\20110101\Folder2\Subfolder1\file.dat

Reports - это просто папка на диске С, она чисто для примера. А вот Folder_Main это папка, в которой есть папки вида YYYYMMDD, в которых в свою очередь есть еще много папок, но без файлов, и в каждой из них тоже есть папки, но в них уже лежат файлы типа file.dat В конце каждого дня, за 10 минут до 00:00 в папке Folder_main создается папка вида YYYYMMDD, т.е. с текущей датой, и с подпапками и файлами как показано выше.

3 и 4 пункт совместил:
Дата создания файла всегда соответствует текущему дню. Отличаться по времени могут (т.к. за 10 лет незначительно менялось время их создания), но это не важно. Имеет она значения или нет, не знаю, мне нужно чтобы удалялись старые папки за минусом трех дней. Наверное имеют. Все эти папки и файлы на следующий день превращаются по сути в мусор, который и нужно очищать, чтобы каталог всегда имел вид (на примере последних трех дней):

D:\Reports\Folder_main\20200213\
D:\Reports\Folder_main\20200212\
D:\Reports\Folder_main\20200211\

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

finderhd 14-02-2020 15:50 2909558

Вложений: 2
  • 1tree.JPG (31.10 KB, скачиваний: 14)
  • 2tree.JPG (29.40 KB, скачиваний: 12)
Чтобы внести ясность со структурой, сделал в тотале в виде дерева (разбил на две части, т.к. не вмещалось, но суть думаю, будет понятна). В каждой папке subfolder лежит файл files.dat
Его размер может быть разным, но имя во всех Subfolder одинаковое. Но по сути это не имеет значение. Должны только оставаться папки вида YYYYMMDD с вложенными в них папками, подпапками и файлами, за минусом в 3 дня т.е. сегодня это будет так:

20200211
20200212
20200213

а завтра уже так:

20200212
20200213
20200214

и т.д., т.е. папки вида YYYYMMDD только за последние 3 дня.

DJ Mogarych 14-02-2020 16:06 2909561

Цитата:

Цитата finderhd
т.е. папки вида YYYYMMDD только за последние 3 дня. »

Зачем тогда вся эта куча лишней информации про вложенные папки и какие-то файлы?

Ещё раз - есть D:\Reports\Folder_main\, в которой есть вложенные папки. Надо грохнуть все эти вложенные папки со всем содержимым, за исключением тех, которые были созданы за последние 3 дня, верно?

finderhd 14-02-2020 16:14 2909562

Цитата:

Цитата DJ Mogarych
Зачем тогда вся эта куча лишней информации про вложенные папки и какие-то файлы?
Ещё раз - есть D:\Reports\Folder_main\, в которой есть вложенные папки. Надо грохнуть все эти вложенные папки со всем содержимым, за исключением тех, которые были созданы за последние 3 дня, верно? »

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

Да, всё именно так, как вы сказали. Нужно грохнуть все вложенные папки, чтобы оставились только за последние три дня. Но доп. услорвия про то, что таких файлов и папок очень много, и нужно максимально снизить нагрузку на сервер при выполнении батника - остаются в силе. Файлы, не смотря на то, что небольшие, занимают очень много места, которое может исчисляться десятками гигабайт.
PS. С PowerShell вообще не знаком.

DJ Mogarych 14-02-2020 16:24 2909563

"батник"
Код:

powershell -command "dir D:\Reports\Folder_main -Directory |sort creationtime |select -SkipLast 3 |del -Recurse -Force"
Нагрузка будет только на дисковую подсистему.

finderhd 14-02-2020 16:30 2909565

Цитата:

Цитата megaloman
finderhd, Да запустите уж наконец мой скрипт! Я изнываю от любопытства! Мне прежде всего интересно время. »

Ок, давайте запущу и понаблюдаю за 5 минут, сколько было и сколько удалится. )
За отсчет будет взята папка за такой год: [20110615]. Все папки вида YYYYMMDD по размеру и количеству подпапок и файлов примерно одинаковые. Количество папок YYYYMMDD примерно 2185 (точно не успел увидеть, т.к. батник уже запустил). Так мы посчитаем среднее значение. По результатам, отпишусь.

Итак, запустил Ваш первый батник (вот этот: http://forum.oszone.net/post-2909428-8.html)

Параметры поставил такие:

Set /A Skip=3
Set /A MaxCount=365

Было каталогов вида YYYYMMDD: 2185, через 5 минут работы батника стало: 1818

Изначальная папка была [20110615], после 5 минут работы батника: [20121123]. Также забыл здесь заметить, что в выходные папки не создаются, только в будние дни, поэтому даты в названиях папок вида YYYYMMDD могут "скакать".
Итого получаем, 367 папок вида YYYYMMDD за 5 минут. Очень хороший результат! :happy:
Так я и не понял, про параметр Set /A MaxCount=365, при условии, что стоит параметр Set /A Skip=3 )

Iska 14-02-2020 17:18 2909572

Я бы сделал проще:
  • взял Far Manager;
  • вошёл в искомый каталог на одной панели;
  • создал на том же разделе другой каталог;
  • вошёл в него на другой панели;
  • отспортировал бы каталоги по нужному критерию;
  • выделил бы все искомые каталоги либо по маске, либо по дате;
  • убрал бы из выделения «три последних»;
  • переместил бы все выделенные каталоги с одной панели на другую;
  • посмотрел бы на результат;
  • если всё верно — перешёл бы на ту панель, куда переместил лишние каталоги;
  • выполнил бы в нём «rd /q /s».

megaloman 14-02-2020 17:43 2909576

Цитата:

Так я и не понял, про параметр Set /A MaxCount=365, при условии, что стоит параметр Set /A Skip=3 )
Вы меня не читаете.
Вам надо оставить 3 папки (дня). Можно, естественно, поставить иное кол-ао папок.
Set /A Skip=3
Так как непонятно было, насколько быстро удаляются папки (Вы их собирались удалять чуть ли не месяц), сделал Вам вариант, какое максимальное количество папок за один запуск батник удалит. Я от фонаря поставил 365, то есть год.
Set /A MaxCount=365
Можно поставить значение, равное или больше количества имеющихся папок. Тогда батник удалит все, за исключением 3 последних.
Судя по Вашему отзыву, надо поставить большое значение, и убить все старье за раз.
Батнику глубоко безразлично, когда папки создаются или не создаются, скачут даты или ползают. Останутся 3 последние папки с максимальными значениями даты в имени.

Цитата:

Цитата Iska
Я бы сделал проще:

Совершенно верно. Один недостаток - в планировщик такое не вставишь.

finderhd 14-02-2020 17:56 2909580

Цитата:

Цитата megaloman
Можно поставить значение, равное или больше количества имеющихся папок. Тогда батник удалит все, за исключением 3 последних.
Судя по Вашему отзыву, надо поставить большое значение, и убить все старье за раз.
Батнику глубоко безразлично, когда папки создаются или не создаются, скачут даты или ползают. Останутся 3 последние папки с максимальными значениями даты в имени. »

я уже понял, прошу прощения. Так и сделаю. Но высплыла одна проблемка - если запускать батник через планировщик (проверяю на тесте - там, три папки за последние дни и две старые), то он запускается, читстит всё, но не останавливается. Приходится вырубать его руками - процесс висит как Runing, и в History видно что планировщик не остановился. Также подскажите плз. как сделать так, чтобы при запуске батника из планировщика, запускалось окошко? Echo on не помогает. При Forfiles, моем первом батнике всё отрабатывает корректно, правда окошко на нем тоже не смог заставить отображаться.

megaloman 14-02-2020 18:04 2909583

Цитата:

читстит всё, но не останавливается. Приходится вырубать его руками.
В смысле? Запрос нажать на клавишу? Уберите pause или закомментируйте ее:
Rem pause
Цитата:

чтобы при запуске батника из планировщика, запускалось окошко? Echo on не помогает.
A что Вы хотите видеть?

finderhd 14-02-2020 18:39 2909591

Вобщем, ситуация такая - батник запускал руками пару раз и было нормально, но потом после обработки предыдущих, запустил еще один раз и он почти сожрал всю свободную оперативку (как я и опасался). Видимо как-то "накопительно" подействовало. Хотя первые два запуска были безболезненны. Пришлось почистить память через RamMap, а иначе бы сервер упал. :( Осталось 1080 папок грохнуть и поставить на поток. Вот только планировщик не хочет останавливать батник после обработки, так и висит в состоянии "Runing"

Цитата:

Цитата megaloman
A что Вы хотите видеть?
»

уже ничего, буду частями удалять указав меньшее количество дней )

Iska 15-02-2020 07:52 2909636

Цитата:

Цитата megaloman
Один недостаток - в планировщик такое не вставишь. »

Я не дописал — это для первоначального удаления. Когда «надо удалить миллион папок и файлов». Однократное действие.

megaloman 15-02-2020 10:23 2909646

Iska, У Вас есть соображения по этому поводу?
Цитата:

Цитата finderhd
Вобщем, ситуация такая - батник запускал руками пару раз и было нормально, но потом после обработки предыдущих, запустил еще один раз и он почти сожрал всю свободную оперативку (как я и опасался). »


Busla 15-02-2020 10:45 2909647

Перечитал всю эту эпопею.

Цитата:

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

Из верных предпосылок делаете неверные выводы.

Как раз ваши попытки использовать "решение поставленное на поток" для обработки десятилетнего архива и выжрет всю память, будет работать неизвестно сколько по времени и т.п.

Так что
Цитата:

Цитата finderhd
вариант с RD, заранее скопировав три главных последних каталога

самый быстрый и надёжный (из простого и доступного по крайней мере)

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

Цитата:

Цитата finderhd
не хотелось бы грузить сервер во время удаления, поэтому предполагается удаление такого большого количества файлов и папок(подпапок) частями »

если у вас не настроены side-эффекты типа репликации, аудита и прочих реакций на события ФС, то блокирующей нагрузки на сервере не будет.

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

vombat2 15-02-2020 13:47 2909669

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

Iska 15-02-2020 21:26 2909695

Цитата:

Цитата megaloman
Iska, У Вас есть соображения по этому поводу? »

Неа, я не глядел код.

finderhd 17-02-2020 08:55 2909828

Цитата:

Цитата megaloman
этого не может быть. Разве что запустить его миллион раз. Какие процессы в диспетчере потребляют память? Кстати, как называется батник? »

Так и было. Запускал я батник всего лишь три раза. Запускал с интервалом в 10 минут. Первые два прошло нормально, а на третий сожралась вся память. А причем здесь название батника? Думаю, память сожралась из-за удаления возросшего количества файлов.

Цитата:

Цитата Busla
А для ежедневного удаления одного файла и двух каталогов можно использовать уже почти любой инструмент не особо задумываясь о памяти и времени. »

В том то и дело. что ежедневно не один файл создается, а порядка 4,5 тыс. папок и столько же файлов. Сейчас проверил тенденцию, общий размер ежедневно появляющегося каталога стал заметно больше, порядка 30 мб. Изначально каталоги занимали по 3,5 Мб. Т.к. размер папок постепенно возрастал, а батник удалял всё что за 365 дней за 1 заход, вот и съелась оперативка. Но я об этом до последнего времени не знал.
На сервере работает по будням другой софт, но он жрет определенное количество оперативки и не более того. В среднем свободно постоянно порядка 5-7 Гб из 12.

Цитата:

Цитата Busla
Что касается ежедневной зачистки - сформулируйте задачу конкретнее и сразу станет понятнее, как её решать. Выберите вариант:
Удалить каталоги, у которых дата в имени старше трёх суток
Удалить каталоги у которых дата создания старше трёх суток.
Удалить всё, кроме трёх последних каталогов. »

Так я ранее уже озвучил. Нужно удалять каталог вида YYYYMMDD за минусом трех дней. В выходные каталоги не создаются.

Сегодня они такие:

20200212
20200213
20200214

а завтра (например) должны быть уже такие:

20200213
20200214
20200217

Цитата:

Цитата vombat2
Как минимум есть желание поучаствовать в обсуждении, поскольку задача так скажем не самая скучная, поддержу педыдущий топик, что немного не хватает конкретики и на м.взг. не помешал бы снимок, может быть скриншот, части целевого дерева каталогов. »

Уже было: http://forum.oszone.net/post-2909558-19.html

megaloman 17-02-2020 09:37 2909835

finderhd,
Цитата:

А причем здесь название батника
если имя батника совпадает с какой-нибудь программой/командой, то возможны коллизии. Лень разбираться - запустите сколько нужно раз батник ручками на удаление сравнительно небольшого количества дней, а в планировщик затем поместите самый простой скрипт.
А, еще лучше, вообще без бат-файла одну команду
Код:

cmd.exe /C FOR /F "usebackq Skip=3 delims=" %f IN (`Dir "\\Server\Test1\Folder_Main\2???????" /B /A:D /O:-N`) Do Rd /S /Q "\\Server\Test1\Folder_Main\%f"
Пути, естественно, за Вами

finderhd 17-02-2020 10:13 2909839

Цитата:

Цитата megaloman
если имя батника совпадает с какой-нибудь программой/командой, то возможны коллизии. Лень разбираться - запустите сколько нужно раз батник на удаление сравнительно небольшого количества дней, а в планировщик затем поместите »

не, такого нет, имя батника уникальное

Цитата:

Цитата megaloman
а в планировщик затем поместите »

спасибо, попробую на тестовом сервере

finderhd 17-02-2020 12:27 2909846

Цитата:

Цитата megaloman
А, еще лучше, вообще без бат-файла одну команду »

Кстати, вот этот самый простой батник кстати безупречно отработал, и в шедулере корректно остановился.

Busla 18-02-2020 11:24 2909942

Цитата:

Цитата finderhd
Так я ранее уже озвучил. Нужно удалять каталог вида YYYYMMDD за минусом трех дней. В выходные каталоги не создаются. »

вам стоило бы поправить своё первое сообщение, потому что озвучено там другое:
Цитата:

Цитата finderhd
Нужно удалить все старые папки вместе с файлами, не трогая последние три. »

Работать с датами в батниках - занятие неблагодарное. Если делать по уму, то стоит писать это на PowerShell или WSH.

megaloman 18-02-2020 11:46 2909944

Busla,
Цитата:

Цитата Busla
Работать с датами в батниках - занятие неблагодарное. »

Но тут этого и не требуется. Есть некий софт, который сохраняет файлы в папки с датой в имени. И три последние надо сохранить, даже не привязываясь к текущей дате, так как: "В выходные каталоги не создаются". Всё. По идее, можно привязаться и в Dir cmd к дате, например, создания папки. И три последние не трогать. Но тут что в лоб, что по лбу - есть конкретика задачи, есть некая система хранения файлов. Здесь всё просто. Не берусь судить о PowerShell, но на WSH эта задача, ИМХО, будет работать дольше, чем в CMD. А для ежедневной работы, когда мусор удалён, скрипт для сохранения несколько последних папок можно написать на чём угодно - здесь время мизерное.
Другое дело, если ежедневно создаются несколько папок с произвольными именами и надо сохранить папки за несколько последних дней - вот там будет возня с датами. Но решаемо и в CMD.

Busla 18-02-2020 12:41 2909952

Цитата:

Цитата megaloman
И три последние надо сохранить, даже не привязываясь к текущей дате »

нет

в понедельник "три последние" - это пятница, четверг и среда

а автор хочет
Цитата:

Цитата finderhd
удалять каталог вида YYYYMMDD за минусом трех дней »

т.е. чтобы в понедельник у него остался только пятничный каталог

Цитата:

Цитата megaloman
По идее, можно привязаться и в Dir cmd к дате, например, создания папки. »

не надо так делать
это эникейский подход "на авось"
завтра поменяют код приложения и у всех каталогов будет идентичная дата создания, потому что каталог может не создаваться, а копироваться из шаблона
что будет при переносе ПО, восстановлении из бэкапа и прочих работах?

Кто вообще сказал, что каталог формируется за сегодня, а не за вчера? А ещё
Цитата:

Цитата finderhd
В выходные каталоги не создаются. »

может означать, что каталоги за СБ и ВС формируются в ПН

В общем, вы и близко не понимаете бизнес-процесс, но готовы накостылять непонятно что и свалить в туман

megaloman 18-02-2020 13:55 2909959

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

YuS_2 18-02-2020 14:36 2909961

Цитата:

Цитата Busla
нет »

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

Цитата:

Цитата Busla
а автор хочет »

то, что автор хочет ... здесь можно надергать массу противоречивых цитат. У него просто не получается однозначно сформулировать задачу. Но уточняющими вопросами, здесь уже выяснили задачу:
Цитата:

Цитата finderhd
Т.е. заходим в Folder_main и видим, что всегда там три каталога вида YYYYMMDD за вчерашний день, позавчерашний и позапозавчерашний. Всё. »


Цитата:

Цитата Busla
стоит писать это на PowerShell »

в топике уже предлагалось, но:
Цитата:

Цитата finderhd
PS. С PowerShell вообще не знаком. »


finderhd 20-02-2020 11:21 2910167

Цитата:

Цитата Busla
т.е. чтобы в понедельник у него остался только пятничный каталог »

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

Цитата:

Цитата Busla
может означать, что каталоги за СБ и ВС формируются в ПН
В общем, вы и близко не понимаете бизнес-процесс, но готовы накостылять непонятно что и свалить в туман »

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

Busla 20-02-2020 12:20 2910178

Цитата:

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

у каждой сколько-нибудь сложной задачи есть простое очевидное неправильное решение

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

Цитата:

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

Это вам показалось, а я просто озвучил неоднозначные моменты, о которых никто не задумывался.

finderhd 20-02-2020 12:58 2910185

Цитата:

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

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

vombat2 20-02-2020 15:06 2910211

Цитата:

Цитата finderhd
ничего идеального нет »

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

finderhd 21-02-2020 11:00 2910313

Цитата:

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

Ну если бы была такая софтинка готова. Но вот я что-то не нашел. Находил Remove Emty Directory, которая удаляет пустые папки (т.к. изначально я удалял через forfiles только файлы), но делала она это крайне медленно.
Поэтому вопрос по удалению без нагрузки на систему, пока остается открытым :( Вариант с планировщиком на удаление большого количества не подходит. Надо контролировать ситуацию. Вариант с фаром что предлагали ранее, тоже, слишком много файлов... Пока потихоньку удаляю руками через Total. Осталось еще почти тысяча каталогов.

megaloman 21-02-2020 11:19 2910314

finderhd,
Цитата:

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

finderhd 21-02-2020 12:39 2910328

Цитата:

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

Это который самый первый?

megaloman 21-02-2020 13:26 2910334

Вот этот

finderhd 12-10-2020 10:17 2936169

Цитата:

Цитата megaloman
Вот этот »

Добрый день. Прошу прощения, что ранее не ответил по результатам. В общем, с Вашим примером удаление корректно работает. Сбоев не наблюдалось, спасибо!


Время: 23:30.

Время: 23:30.
© OSzone.net 2001-