Войти

Показать полную графическую версию : Удаление в каталоге всех подкаталогов, размер которых превышает 20 Мбайт


krisnv
23-03-2010, 13:21
Написать пакетный файл, который автоматически удалял бы в каталоге, указанном в командной строке все подкаталоги, размер которых превышает 20 Мбайт.
Если пакетный файл запуска¬ется вообще без параметров, то вывести описание его синтаксиса.

gora
23-03-2010, 14:18
@Echo Off
:: Кодировка файла DOS (866)
SetLocal enabledelayedexpansion
Set Folder=%~1
If Not Defined Folder GoTo :_help
For /F %%i In ('Dir "%Folder%" /AD /B /ON 2^>Nul') Do (
Call :_sizedir "%Folder%\%%i"
If !dirsize! GTR 20971520 Echo RD /S /Q "%Folder%\%%i"
)
Pause>Nul
Exit

:_help
Echo %~nx0 "Full\path\Folder"
Pause>Nul
Exit

:_sizedir
Set flag=0
Set dirsize=0
For /F "tokens=1-3" %%a In ('dir %1 /-C /S /A:-D 2^>Nul') Do (
If !flag!==1 Set dirsize=%%c
If "%%b"=="файлов:" (Set flag=1) Else Set flag=0
)
GoTo:EOF
Для тестов команда удаления закомментирована командой "Echo".

krisnv
23-03-2010, 18:59
Блин он не хочет удалять

gora
23-03-2010, 19:42
не хочет удалять »
1 Проверьте кодировку файла (DOS).
2 Удалите Echo в 8-ой строке.
3 Может папки какие-то система не дает удалить?




© OSzone.net 2001-2012