Показать полную графическую версию : [решено] Скрипт удаляющий папки размером меньше 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
)
@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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.