Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
11 / 11 / 1
Регистрация: 31.08.2012
Сообщений: 110

Определить размер папки

07.01.2013, 14:44. Показов 42309. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
 Комментарий модератора 
Сообщение выделено из темы:
Команда ROBOCOPY и размер папки


Спасибо всем! Получается!
Только я терь к другой немножко схеме подошёл , можно из этого кода выдрать токо то что считывает размер папки (с под папками) и выводит на экран?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.01.2013, 14:44
Ответы с готовыми решениями:

Посчитать размер папки
Есть код который по выбору показывает размер папки , но в нём какая то ошибка и он показывает размер той папки в которой находится! ...

Команда ROBOCOPY и размер папки
Как (если можно) в команде robocopy сделать чтобы вместо подробной инфы о всех файлах он показывал "Установка... Х% , ХХ.ХХ КБ из...

Как определить размер папки
Здравствуйте, формучане :) Пытаюсь определить размер папки скриптом php, но выходит довольно туго. Пробовал 2 способа - рекурсивно...

47
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
07.01.2013, 17:08
Цитата Сообщение от Dragokas Посмотреть сообщение
:GetFolderSize %1-Folder_Name %2-Var_Name.Size
в заглавии как-бы описание.

Bash
1
2
3
4
5
@echo off
Set folder=c:\temp
Call :GetFolderSize "%folder%" Size
Echo Size=%Size% Bytes
pause
Расширенный пример этой функции с выводом на экран разбивки на Кб и Мб есть здесь: Тонкости языка, редкие команды и сложные скрипты
1
11 / 11 / 1
Регистрация: 31.08.2012
Сообщений: 110
07.01.2013, 17:35  [ТС]
Короче
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Echo Off
SetLocal enabledelayedexpansion
Set /p D=?
For /F "skip=4 tokens=1-3" %%a IN ('Dir "%D%" /-C /S /A:-D') Do (
If !flag!==1 Set dirsize=%%c
If "%%b"=="файлов:" (Set flag=1) else (Set flag=0)
)
Set /a dirsizeT=dirsize+0
If Not "%dirsizeT%"=="%dirsize%" Echo Число %dirsize% слишком велико для обработки в CMD&Pause>nul&Exit
Set kb=1024
Set /a mb=kb*kb, gb=kb*kb*kb, dirsizeMB=dirsize/mb, ostMB=dirsize%%mb*100/mb
Rem Set /a dirsizeGB=dirsize/gb, ostGB=dirsize%%gb*10/gb
Echo %dirsizeMB%,%ostMB% МБ
Rem Echo %dirsizeGB%,%ostGB% ГБ
Pause>nul
И терь осталось какбы он не говорил мне что "Echo Число слишком велико для обработки в CMD" сделать...
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
07.01.2013, 21:13
Озвучьте, пожалуйста, полностью задание.

Размер папки в байтах Вы получили - это переменная dirsize, начиная со строки № 8.
Остальное по сути лишнее.
0
11 / 11 / 1
Регистрация: 31.08.2012
Сообщений: 110
07.01.2013, 22:42  [ТС]
Полностью дак полностью:
У меня есть длинный код
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
for /f "skip=4 tokens=1-3" %%a in ('Dir "%p%" /-C /S 2^>nul') do (
set pap=%%~na
If !flag!==1 set dirsize=%%c& set nn=%%a
If "%%b"=="файлов:" (Set flag=1) Else (Set flag=0))
set Cnt=!dirsize!
Call:UDIV2 %Cnt% dirsizeMB  20
Call:UMUL2 %dirsizeMB% CntT 20
Call:SUM %Cnt% -%CntT% ost
Set/a $.mb=(%ost%*100)/(1024*1024)
Set "$.mb=0%$.mb%"& Set "$.mb=!$.mb:~-2!"
if errorlevel 6 (
cls
echo.
echo                             Информация GTA IV
echo  Размер %dirsizeMB%,%$.mb% Мб
echo  Установлена по пути:
echo  %u%
goto usmd
)
cls
echo.
echo                                   Установка
echo.
echo   Найдено !nn! файлов, размер которых %dirsizeMB%,%$.mb% Мб
echo.
echo   Начать установку
echo   Удаление мода
echo   Назад
choice /C 123 /N
if errorlevel 3 goto re
if errorlevel 2 goto ud
if errorlevel 1 goto set
:SUM  %uint%  %uint%  %VarRes%
(set "$a=%~1"& set "$b=%~2"
if "!$a:~,1!"=="-" (set "$az=-"&set "$a=!$a:-=!") else set "$az="
if "!$b:~,1!"=="-" (set "$bz=-"&set "$b=!$b:-=!") else set "$bz="
for /f "tokens=* delims=0" %%i in ("!$a:~-9!") do set/a "$al=%%i+0"&set/a "$ah=!$a:~,-9!+0"
for /f "tokens=* delims=0" %%i in ("!$b:~-9!") do set/a "$bl=%%i+0"&set/a "$bh=!$b:~,-9!+0"
set/a "$sl=(!$az!!$al!)+(!$bz!!$bl!)"&set/a $p=!$sl:~,-9!+0&set/a "$sl=!$sl!-(!$p!000000000)"
set/a "$sh=(!$az!!$ah!)+(!$bz!!$bh!)+(!$p!+0)"
if !$sh! gtr 0 if !$sl! lss 0 set/a $sh-=1& set/a "$sl=(1000000000+!$sl!)"
if !$sh! lss 0 if !$sl! gtr 0 set/a $sh+=1& set/a "$sl=(!$sl!-1000000000)"
for /f "delims=0123456789" %%i in ("!$sh!!$sl!") do set "$z=%%i"
if !$sh! equ 0 if !$sl! equ 0 set "$z=0"
set "$sl=00000000!$sl:-=!")
for /f "tokens=* delims=0" %%i in ("!$sh:-=!!$sl:~-9!") do ENDLOCAL& set "%~3=%$z%%%i"
GoTo:EOF
:UDIV2  %uint% %VarRes% %uint%
(set "$a=%~1"& set/a "$c=%~3+0"& if !$c! equ 0 set "$c=1"
for /f "tokens=* delims=0" %%i in ("!$a:~-9!") do set/a "$al=%%i+0,$ah=!$a:~,-9!+0"
for /l %%i in (1,1,!$c!) do (
set/a "$p=$ah&1,$ah>>=1,$al>>=1"
if !$p!==1 set/a $al=$al+500000000)
set "$z="& if !$ah! equ 0 if !$al! equ 0 set "$z=0")
for /f "tokens=* delims=0" %%i in ("!$ah!!$al!") do ENDLOCAL& set "%~2=%$z%%%i"
GoTo:EOF
:UMUL2  %uint% %VarRes% %uint%
(set %~2=%~1& set/a "$c=%~3+0"& if !$c! equ 0 set "$c=1"
for /l %%i in (1,1,!$c!) do Call:SUM !%~2! !%~2! %~2
for /f %%i in ("!%~2!") do ENDLOCAL& set "%~2=%%i")
GoTo:EOF
+ Этот
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Echo Off
SetLocal enabledelayedexpansion
Set /p D=?
cls
For /F "skip=4 tokens=1-3" %%a IN ('Dir "%D%" /-C /S /A:-D') Do (
If !flag!==1 Set dirsize=%%c
If "%%b"=="файлов:" (Set flag=1) else (Set flag=0)
)
Set /a dirsizeT=dirsize+0
If Not "%dirsizeT%"=="%dirsize%" Echo Число %dirsize% слишком велико для обработки в CMD&Pause>nul
Set kb=1024
Set /a mb=kb*kb, gb=kb*kb*kb, dirsizeMB=dirsize/mb, ostMB=dirsize%%mb*100/mb
Rem Set /a dirsizeGB=dirsize/gb, ostGB=dirsize%%gb*10/gb
Echo %dirsizeMB%,%ostMB% МБ
Rem Echo %dirsizeGB%,%ostGB% ГБ
Pause>nul
Первый всё делает ,но он большущий , я думал если бы написать более мелкий но с той-же функцией!
Второй хоть и подсчитывает ,но если число превысит фиг знает какое значение , то он пишет мне ту фигню...
Вы умный и может сможете мне помочь?
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
08.01.2013, 02:58
Кхм.
Нет, не на столько, как бы хотелось )

Я так понял Вам нужно, чтобы ответ писало в МегаБайтах, но при этом математика не выдавала ошибок.

(*немного почесав голову*)

Так достаточно коротко: ?
Bash
1
2
3
4
5
6
7
@Echo Off
SetLocal enabledelayedexpansion
Set D=l:\Bash
For /F "tokens=1-3" %%a IN ('Dir "%D%" /-C/S/A:-D') Do Set DirSize=!n2!& Set n2=%%c
Set DirSize=%DirSize:~0,-6%
Echo Size of %D% is %DirSize% MB.
pause
2
11 / 11 / 1
Регистрация: 31.08.2012
Сообщений: 110
08.01.2013, 12:06  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
достаточно коротко: ?
О Господи ну наконец то! Спасибо огромное вам!!! , Всё решено! , мелкий вопросик (так просто):
Вот когда тыкаешь на свойства папки и видишь размер ,то он показывает
Размер: 8,00 ГБ (8 596 143 292 байт)
На диске: 8,00 ГБ (8 599 232 512 байт)
Чё он сначала говорит что размер 8 ГБ ,а тут же пишет 8,5 ГБ ? (и ваш код как раз размер который в скобках считает...)
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
08.01.2013, 12:40
Code
1
2
3
4
1 Кб = 1024Байта
1 Мб = 1024*1024=1048576 Байт
1 Гб = 1048576*1024=1073741824 Байт
8 596 143 292 Байт = 8 596 143 292 / 1073741824 =  8,005 Гб
Всё. Просто занимательная информатика.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
08.01.2013, 12:52
Лучший ответ Сообщение было отмечено Joey как решение

Решение

Вам вроде как хотелось по-короче.
Ну если нужно и с сотыми, тогда так:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Echo Off
SetLocal enabledelayedexpansion
Set D=l:\Bash
For /F "tokens=1-3" %%a IN ('Dir "%D%" /-C/S/A:-D') Do Set DirSize=!n2!& Set n2=%%c
CAll :var_count "%DirSize%" VarC
Set /A VarC-=6
if %VarC% LEQ 0 (Set DirSizeMB=0) else (Set DirSizeMB=%DirSize:~0,-6%)
if %VarC% GEQ 1 Set DirSizeMB=%DirSizeMB%,!DirSize:~%VarC%,2!
Echo Size of %D% is %DirSizeMB% MB.
pause& Goto :eof
 
:var_count %1-Var.Value %2-Var.Count.Result
::Определяет длину переменной
set var=%~1
if not defined var exit /b
set var=%var:~1%
set /a %~2+=1
call :var_count "%var%" %~2
exit /b
1
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
08.01.2013, 13:08
В смысле? Я просто пример привёл, почему 8 596 143 292 Байт это 8 Гб и всё.
0
11 / 11 / 1
Регистрация: 31.08.2012
Сообщений: 110
08.01.2013, 13:49  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
нужно и с сотыми
Да нееее! Всё норм , FraidZZ - уже дал ответ , меня щас интересует как сделать чтоб он исключал папки "backup" и "mod"
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
08.01.2013, 13:56
Отрывок кода приведи, где нужно исключение
0
11 / 11 / 1
Регистрация: 31.08.2012
Сообщений: 110
08.01.2013, 14:47  [ТС]
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
set p=%u%
 
:sco
For /F "tokens=1-3" %%a IN ('Dir "%p%" /-C/S/A:-D') Do Set DirSize=!n2!& Set n2=%%c
Set DirSize=%DirSize:~0,-6%
For /F "skip=4 tokens=1-3" %%a IN ('Dir "%p%" /-C /S /A:-D^|find /I "файлов"') Do (
set fi=%%a
)
if errorlevel 6 (
cls
echo.
echo                             Информация GTA IV
echo  Размер %DirSize% MB
echo  Установлена по пути:
echo  %u%
goto usmd
)
Значит: Сначала ставит что п=у (у в данном случае является путём в реестре к каталогу) ,потом показывает размер папки (%u%)
Вот во время этого подсчёта он должен исключать папки "mod" и "backup"

Добавлено через 7 минут
А можно ещё сделать чтобы он считал в другом формате как
тут расписано?
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
08.01.2013, 16:09
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
set p=%u%
 
:sco
attrib -R * /S /D
attrib +R mod
attrib +R backup
For /F "tokens=1-3" %%a IN ('Dir "%p%" /-C/S/A:-D-R') Do Set DirSize=!n2!& Set n2=%%c
Set DirSize=%DirSize:~0,-6%
For /F "skip=4 tokens=1-3" %%a IN ('Dir "%p%" /-C /S /A:-D-R^|find /I "файлов"') Do (
set fi=%%a
)
attrib -R * /S /D
if errorlevel 6 (
cls
echo.
echo                             Информация GTA IV
echo  Размер %DirSize% MB
echo  Установлена по пути:
echo  %u%
goto usmd
)
Добавил команды attrib. А также внимательно сравни мою 7ую строчку с 4ой твоей, а также 9ую с 6ой.

Цитата Сообщение от Jeka_Osokin Посмотреть сообщение
А можно ещё сделать чтобы он считал в другом формате как
тут расписано?
Так это же вроде Dragokas сделал.
0
11 / 11 / 1
Регистрация: 31.08.2012
Сообщений: 110
08.01.2013, 21:13  [ТС]
Dragokas сделал
Не знаю... , в общем тут так я вырезки из кода тогда приводил и по этому полностью код работает не корректно...
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Set b=backup
Set m=mod
 
(Всякие коды...)
 
:gtada
cls
echo.
echo  Пожалуйста подождите...
set p=%u%
goto sco
 
(Всякие коды...)
 
:yefi
cls
echo.
echo                                   Установка
echo.
echo   Идёт подсчёт файлов и их размера...
set p=%u%\%m%
:sco
attrib -R * /S /D
if exist %u%\%m% attrib +R mod
if exist %u%\%b% attrib +R backup
For /F "tokens=1-3" %%a IN ('Dir "%p%" /-C/S/A:-D-R') Do Set DirSize=!n2!& Set n2=%%c
Set DirSize=%DirSize:~0,-6%
For /F "skip=4 tokens=1-3" %%a IN ('Dir "%p%" /-C /S /A:-D-R^|find /I "файлов"') Do (
set fi=%%a
attrib -R * /S /D
)
if errorlevel 6 (
cls
echo.
echo                             Информация GTA IV
echo  Размер %DirSize% MB
echo  Установлена по пути:
echo  %u%
goto usmd
)
cls
echo.
echo                                   Установка
echo.
echo   Найдено !fi! файлов, размер которых %DirSize% MB
echo.
echo   Начать установку
echo   Удаление мода
echo   Назад
choice /C 123 /N
if errorlevel 3 goto re
if errorlevel 2 goto ud
if errorlevel 1 goto set
:nofi
color 74
echo.
echo   Папка с модами не найдена
goto m
Когда в "главном меню" выбираю "установку" (errorlevel 2) , он мне на пол секунды показывает "переустановка атрибутов скрытого файла F:\b\dektop.ini не произведена" а потом показывает всё правильно... (строка 42-49) , но когда я в "главном меню" выбираю "инфо" (errorlevel 6) он мне это-же самое показывает (строка 42-49) , а мне надо чтобы при выборе "инфо" (errorlevel 6) он показывал (сторки 34-39)

Добавлено через 2 часа 9 минут
Да и ваще , тщательно по смотря я понял что он как-то не правильно показывает размер папки ,когда исключает те две...
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
08.01.2013, 21:27
Хм, странно о_0
Я по сути добавил к тем папкам атрибут "Только чтение", а затем запретил считать файлы с этим атрибутом команде 'dir'. После чего снял этот атрибут. Странно.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
08.01.2013, 21:42
Jeka_Osokin, все не читал. Но ошибка "переустановка атрибутов не произведена"
бывает по 2 причинам.

1) не может получить доступ к файлу (заблокирован приложением или не хватает прав)
2) файл является скрытым или системным, тогда нужно указывать не просто -R, а -S -H -R
0
11 / 11 / 1
Регистрация: 31.08.2012
Сообщений: 110
09.01.2013, 01:43  [ТС]
Цитата Сообщение от FraidZZ Посмотреть сообщение
Хм, странно о_0
Не знаю не знаю....
Цитата Сообщение от Dragokas Посмотреть сообщение
бывает по 2 причинам
1 доступ к файлу быть и не может , потому что файла то и нету!
2 по идее он есть токо на рабочем столе и он скрытный , но код думает что он в этой папке...
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
09.01.2013, 01:53
Позвольте спросить. Вот здесь Вы что пытаетесь сделать
и имеет ли это прямое отношение к названию данной темы?
Может стоит перенести в новую тему, дав определенное название.
Цитата Сообщение от Jeka_Osokin Посмотреть сообщение
Bash
1
2
3
For /F "skip=4 tokens=1-3" %%a IN ('Dir "%p%" /-C /S /A:-D-R^|find /I "файлов"') Do (
set fi=%%a
attrib -R * /S /D
)
0
11 / 11 / 1
Регистрация: 31.08.2012
Сообщений: 110
12.01.2013, 18:18  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
Вот здесь Вы что пытаетесь сделать
Извиняюсь , попало просто под общий код , там определяется сколько файлов в папке , это не имеет отношение к данному вопросу , но главное то как заставить его не считать размер папки backup и mod?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.01.2013, 18:18
Помогаю со студенческими работами здесь

Определить размер папки на компьютере в байтах
Как можно проще всего програмно, например при нажатии на кноку определить размер папки ?

Размер папки
Всем привет! Нужно узнать развер папки! С примером пожалуйста!

Размер папки
Доброго времени суток! Подскажите как можно узнать размер выбранного каталога? в интернете ни чего нет нормального Заранее всем...

РАЗМЕР ПАПКИ
Требуется определить размер папки на диске Использую функции прописаные здесь: http://www.delphiworld.narod.ru/base/get_dir_size.html...

Размер папки .svn
Добрый день. Использую tortoisesvn. Очень быстро растет скрытая папка .svn. Как ее можно очищать время от времени? На компе мало места.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru