пакетный файл, показывающий размер папки, но не отображающий размер подпапок и подпапок из этой подпапки

Моя пакетная программа показывает размер нужной папки, но не показывает размер папки, включая подпапки. Просто пропускает их. Как заставить программу видеть общий размер папки?

Программа здесь:

@echo off &setlocal enabledelayedexpansion
:: folder choose
echo enter desired directory
set /p dir=
cd /d %dir%
::getting folder size
for /f "tokens=3" %%a IN ('dir /a-d /-c') DO (
   set size=!free!
   set free=%%a
   )
echo free space is %free% bytes
echo size is %size% bytes 

заранее спасибо!

Нильс


person Niels    schedule 14.12.2016    source источник


Ответы (2)


Вы просто пропустили добавление опции /s к команде dir:

@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "FOLDER=" & set /P FOLDER=""
for /f "tokens=3" %%A in ('
    dir /S /A:-D /-C "!FOLDER!"
') do (
    set "SIZE=!FREE!"
    set "FREE=%%A"
)
echo free space is %free% bytes
echo size is %size% bytes 
endlocal
person aschipfl    schedule 19.12.2016

Чтобы увидеть размер папок на рабочем столе.

for /f "skip=2 tokens=3" %A in ('Reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Desktop"') do set doc=%A

for /f "usebackq tokens=2* delims= " %i IN (`dir "%doc%" /a /s ^|findstr /i /v "\/"`) DO @echo %j&echo.

Чтобы увидеть размер папок в папке System32.

for /f "usebackq tokens=2* delims= " %i IN (`dir "%windir%\system32" /a /s ^|findstr /i /v "\/"`) DO @echo %j&echo.

См. Findstr /?

person Community    schedule 14.12.2016