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

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

Ответить
Настройки темы
CMD/BAT - [решено] Удаление файлов нулевого размера, а затем удаление пустых каталогов

Аватара для ilyadud

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


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

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


Здравствуйте! Очень необходима помощь в написании простого скрипта удаления. Скрипт работает в папке, в которой он запущен. Глубина поиска и удаления желательно не менее 7. Вот алгоритм:

1. Удалить все файлы нулевого размера в каталогах и подкаталогах (проникать как можно глубже).
2. Удалить все пустые каталоги (точно так же проникать)
3. Конец

Т.е. нужно удалить все файлы нулевого размера, которые вообще есть в каталогах и подкаталогах (все до единого).
Затем просмотреть все до единого существующие каталоги и подкаталоги, и удалить пустые.

Думаю, смысл понятен. Буду благодарен за помощь!

-------
Руководитель NADevs Group


Отправлено: 07:53, 24-08-2012

 

Ветеран


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

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


forfiles возвращает в том числе и размер файла

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

Отправлено: 09:39, 24-08-2012 | #2



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

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


Аватара для El Sanchez

Ветеран


Contributor


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

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


ilyadud, пробуйте:
Код: Выделить весь код
@Echo Off
SetLocal
For /F "Tokens=*" %%A In ('Dir /B /S /AD 2^>nul^|Sort /R') Do (
	For /F "Tokens=3*" %%B In ('Dir "%%A" /S /A-D /N /-C 2^>nul^|FindStr /irc:":[0-5][0-9] *0"') Do Del /F /Q "%%A\%%C" 2>nul&&Echo:Файл %%A\%%C удален.
	RD "%%A" 2>nul&&Echo:Каталог %%A удален.
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:45, 24-08-2012 | #3


Ветеран


Contributor


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

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


El Sanchez, Я в восторге от Вашего решения. Но не понимаю, почему второй For нельзя было сделать проще
Код: Выделить весь код
FOR /F "usebackq delims=" %%i IN (`Dir "%%A\*.*" /s /b /a:-d 2^>nul^`) DO If %%~zi==0 Del "%%i"&&Echo:Файл %%i удален

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

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

Отправлено: 23:27, 24-08-2012 | #4


Аватара для ilyadud

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


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

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


Всем огромное спасибо! Скрипт проверил - вроде работает без ошибок

-------
Руководитель NADevs Group


Отправлено: 07:30, 25-08-2012 | #5


Аватара для El Sanchez

Ветеран


Contributor


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

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


Цитата megaloman:
Но не понимаю, почему второй For нельзя было сделать проще »
megaloman, да, такой вариант тоже имеет право на существование. Просто я подумал, что циклу нужно обрабатывать как можно меньше строк результата вывода команды dir, поэтому и пропустил через findstr. Что быстрее? Не проверял.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:57, 25-08-2012 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление пустых каталогов через CMD toro Скриптовые языки администрирования Windows 11 08-12-2022 12:35
CMD/BAT - [решено] Удаление пустых каталогов и подкаталогов через CMD Andzzzz Скриптовые языки администрирования Windows 5 29-08-2013 16:00
VBS/WSH/JS - [решено] Удаление файлов меньше определенного размера XXXp Скриптовые языки администрирования Windows 19 03-05-2012 15:12
CMD/BAT - Удаление пустых каталогов rosalin Скриптовые языки администрирования Windows 1 12-05-2009 15:05
Удаление неудаляемых файлов и каталогов Kasper Хочу все знать 52 14-05-2004 00:29




 
Переход