MyTetra Share
Делитесь знаниями!
Поиск альтернативных файловых потоков, которые занимают слишком много места на диске
Время создания: 31.07.2019 15:27
Текстовые метки: WinDirStat, size
Раздел: Script
Запись: xintrea/mytetra_db_adgaver_new/master/base/1514660690y3vexo54wx/text.html на raw.githubusercontent.com

Поиск альтернативных файловых потоков, которые занимают слишком много места на диске

Как известно, большинство программ оценки свободного места (вроде WinDirStat) не показывают объем, занимаемый альтернативными файловыми потоками.
Этот скрипт призван заполнить такой недостаток.

По-умолчанию сканируется только системный диск.
В отчёт попадут файли и папки, чьи ADS занимают более 1000 байт. Можете изменить этот лимит в переменной MAX_STREAM_SIZE.

Совместимость: Windows Vista и выше.

Код (DOS):

@echo off
SetLocal EnableExtensions

set "MAX_STREAM_SIZE=1000"

cd /d "%~dp0"
2>nul del ADS.log
echo _______________________________
echo  ADS scaner by Alex Dragokas
title ADS scaner by Alex Dragokas
echo _______________________________
echo .
echo Scanning disk %SystemDrive% ...
echo Please, wait.
echo .

net session >NUL 2>NUL || (
  echo Запустите утилиту от имени Администратора !!!
  echo You need to launch this app. as Admin !!!
  pause>nul & goto :eof
)
:: for pseudo progress-bar purposes

set Drive=%SystemDrive%

call :ScanFolder %Drive%

:: 1 level

for /f "delims=" %%a in ('dir /b /ad-l "%Drive%\*"') do (

  call :ScanFolder "%Drive%\%%a"

  rem 2 level

  for /f "delims=" %%b in ('dir /b /ad-l "%Drive%\%%a\*"') do (

    rem Start recursive scanning on 2 level

    call :ScanFolder "%Drive%\%%a\%%b" /s
  )
)

del t.log t2.log
explorer ADS.log
pause
goto :eof

:ScanFolder [Path] [/s for recursive]

echo "%~1"
dir /r /a-l /-c %~2 "%~1\*" > t.log
echo Parsing ...
< t.log > t2.log findstr /r /c:":.*:" /c:"Содержимое папки" /c:"Directory of"

for /f "tokens=1-2*" %%a in (t2.log) do (

  if "%%a %%b"=="Содержимое папки" (
    set "Folder=%%c"
  ) else (
  if "%%a %%b"=="Directory of" (
    set "Folder=%%c"
  ) else (
  if %%a GTR %MAX_STREAM_SIZE% call :Log "%%a" "%%b %%c"
  ))
)
exit /b

:Log
echo %~1 "%Folder%\%~2" >> ADS.log
exit /b
 

Батник обязательно сохранять в кодировке OEM-866.

Прикрепленные файлы:
Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования