Войти

Показать полную графическую версию : [решено] Скрипт удаляющий папки размером меньше 100 кбайт в директории


cyberp1983
27-04-2016, 08:42
Есть директория в которой сотни папок(с подпапками) в которых должны храниться файлы общим размером от 400 кбайт.
Но часть этих файлов из за ошибки была когда то уничтожена, и сейчас хранится куча, или совсем пустых или с не полным комплектом файлов, папок, которые нужно удалить.
Нужен Скрипт удаляющий папки размером меньше 100 кбайт в директории.
Заранее Огромное Спасибо!

greg zakharov
27-04-2016, 10:22
@echo off
setlocal&chcp 1251>nul
for /f %%i in ('dir /ad /s /b') do (
for /f "tokens=3" %%j in (
'robocopy "%%~i" "%tmp%" /l /bytes^
/nfl /ndl /xj /njh ^| find /i "байт"'
) do if %%j lss 1024 rd /q /s "%%~i"
)
endlocal&chcp 866>nul
exit /b

megaloman
27-04-2016, 17:09
@Echo off

Set "In=D:\Dir100"
Set "Size=102400"

SetLocal EnableExtensions EnableDelayedExpansion

for /f "usebackq delims=" %%d in (`dir /b /A:D "%In%\" 2^>nul`) Do (
for /f "usebackq tokens=3" %%i in (`dir /s /-c /A:-D "%In%\%%d\" 2^>nul`) Do Set "A=!B!" & Set "B=%%i"
Set "BB=!A:~0,1!"
Set /A B=!BB:~0,1!*1 2>nul
If Not "!B!"=="!BB!" Set "A=0"
If !A! LSS %Size% Rd "%In%\%%d" /q /s
)

alpap
27-04-2016, 17:22
@echo off
for /f "delims=" %%A in ('dir/ad/b/s "papka"') do (
for /f "tokens=3" %%a in ('dir/a-d/s/-c "%%A"^|sort/+2147483647^|more +1^|set/p ds^=^^^&cmd/v/c echo:!ds!') do (
set/a ds=%%a/1024&cmd/v/c if !ds! lss 100 echo:Удаляем папку [rd/s/q "%%A"]
))
pause>nul

echo:Удаляем папку и [] - убрать, если все устраивает.




© OSzone.net 2001-2012