Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Jeka_Osokin
11 / 11 / 1
Регистрация: 31.08.2012
Сообщений: 110
1

Посчитать размер папки

22.12.2012, 10:13. Просмотров 1496. Ответов 3
Метки нет (Все метки)

Есть код который по выбору показывает размер папки , но в нём какая то ошибка и он показывает размер той папки в которой находится!
Bash
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
62
63
64
65
@echo off
color 70
:1
set common=c
set pc=p
set movies=m
cls
echo Размер папки Common
echo Размер папки PC
echo Размер папки Movies
choice /C 1234 /N
if errorlevel 4 exit
if errorlevel 3 goto mo
if errorlevel 2 goto pc
if errorlevel 1 goto 3
:pc
set pc=c
goto 3
:mo
set movies=c
:3
setlocal enabledelayedexpansion
for /f "skip=4 tokens=1-3" %%a in ('Dir "%c%" /-C /S 2^>nul') do (
If !flag!==1 set dirsize=%%c
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!"
cls
echo.
echo  Размер папки %dirsizeMB%,%$.mb% Мб
pause >nul
goto 1
: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
А должно всё быть так: жмёшь 1/2/3 и он показывает размер папки соответствующего слова в строке тоесть common , pc или movies...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2012, 10:13
Ответы с готовыми решениями:

Определить размер папки
Сообщение выделено из темы: http://www.cyberforum.ru/cmd-bat/thread645033.html Спасибо всем!...

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

Выполнить действие, если размер папки превышает 10 МБ
Здравствуйте !!! как в бат сделать такое если папка больше 10mb запуск файла не происходит если...

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

Подсчитать размер папки вместе с содержимым всех ее подпапок
Нужно написать .bat файл. Подсчитать размер папки вместе с содержимым всех ее подпапок. Имя папки...

3
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
22.12.2012, 15:14 2
Jeka_Osokin, у Вас не прописан полный путь к папкам, поэтому и ошибка. В ХРюне нет команды choice, код мог бы выглядеть так:
Кликните здесь для просмотра всего текста
Bash
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
62
63
64
@echo off
setlocal enabledelayedexpansion
 
:1
echo Для определения размер папки   Common          наберите    1
echo Для определения размер папки   Installer   наберите    2
echo Для определения размер папки   Temp            наберите    3
echo Для выхода                 наберите    0
echo.
 
set /p choice="Ваш выбор: "
if not defined choice goto 1
if "%choice%"=="1" set nam="Common Files"& set dr="%ProgramFiles%\Common Files"& goto 2
if "%choice%"=="2" set nam=Installer& set dr="c:\WINDOWS\Installer"& goto 2
if "%choice%"=="3" set nam=Temp& set dr="c:\WINDOWS\Temp"& goto 2
if "%choice%"=="0" exit /b
cls
goto 1
 
:2
for /f "skip=4 tokens=1-3" %%a in ('Dir %dr% /-C /S 2^>nul') do (
If !flag!==1 set dirsize=%%c
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!"
 
echo.
echo  Размер папки %nam% - %dirsizeMB%,%$.mb% Мб
pause >nul
cls
goto 1
: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

пути, разумеется, поставить свои.
0
Dragokas
Эксперт WindowsАвтор FAQ
17053 / 7109 / 860
Регистрация: 25.12.2011
Сообщений: 10,920
Записей в блоге: 16
22.12.2012, 19:18 3
Иногда падает на ошибке 8-ричной СС.
Надо бы строку 49 подправить:
Bash
1
for /f "tokens=* delims=0" %%i in ("!$sh:-=!!$sl:~-9!") do ENDLOCAL& if "%$z%"=="0" (set "%~3=%%i") else (set "%~3=%$z%%%i")
1
Jeka_Osokin
11 / 11 / 1
Регистрация: 31.08.2012
Сообщений: 110
30.12.2012, 09:32  [ТС] 4
Ха , там всего то надо было подправить
Bash
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
@echo off
:1
cls
echo Размер папки Common
echo Размер папки PC
echo Размер папки Movies
choice /C 1234 /N
if errorlevel 4 exit
if errorlevel 3 set dr="movies"& goto 2
if errorlevel 2 set dr="pc"& goto 2
if errorlevel 1 set dr="common"& goto 2
:2
cls
echo.
echo  Подожди...
setlocal enabledelayedexpansion
for /f "skip=4 tokens=1-3" %%a in ('Dir "%dr%" /-C /S 2^>nul') do (
If !flag!==1 set dirsize=%%c
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!"
cls
echo.
echo  Размер папки %dirsizeMB%,%$.mb% Мб
pause >nul
goto 1
: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
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2012, 09:32

Создать батник, при запуске которого будет показываться размер папок и файлов текущей папки
Всем привет!:) Пришла на форум за помощью. Я новичок%-) Мне нужно создать батник, при запуске...

Создание копии папки со случайным именем и копирование ее (папки) в заданный раздел
Подскажите как сделать в .bat создание копии папки со случайным именем и копирование ее (папки) в...

Копировать файлы в папки при совпадении имен файла и папки
Добрый день. Задача такая, есть папка в которой содержатся файлы, каждый файл с уникальным...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru