Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] получить размер каталога с подкаталогами

Ответить
Настройки темы
CMD/BAT - [решено] получить размер каталога с подкаталогами

Аватара для Loki3D

Старожил


Сообщения: 362
Благодарности: 11

Профиль | Отправить PM | Цитировать


подскажите, возможно ли это и как?

-------
sory 4 my rus


Отправлено: 15:15, 27-11-2009

 

Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


Цитата amel27:
не понятен смысл этой задумки »
amel27, скрипт отлично работает с жесткими дисками. Мелкая и совсем не обязательная хотелка, которая если будет решена - хорошо, не будет решена - ничего страшного.
читать дальше »
При вставленной обычной флешке пишет, что файл не найден. Скрины Image 1.jpg, Image 2.jpg при подключенном коммуникаторе, 2011-05-05 09 02 33.jpg при обычной флешке.

Последний раз редактировалось sov44, 06-12-2011 в 22:29.


Отправлено: 07:21, 05-05-2011 | #41



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


sov44, ошибка была при наличии пустых папок - исправил

по поводу скринов 1-2 была тема:
CMD/BAT - [решено] Составление списка существуюих дисков + отсев дисков не имеющих ФС

так будет выглядеть начало скрипта со сканированием через WMIC:
читать дальше »
Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion

rem Очистка корзины на всех дисках
Set Cnt=0& Set dirsize4=0& For /F "UseBackQ" %%d In (
`WMIC LogicalDisk Where "FileSystem LIKE '_%%'" Get Caption^|Find ":"`) do (
 Set "DirProg=%%d\RECYCLER"& Set "flag=0"
 If EXIST !DirProg! (For /F "Skip=4 Tokens=1-3" %%a In ('DIR/-C/S/A:-D "!DirProg!"2^>Nul') Do (
      If !flag!==1 Set dirsize4=%%c
      If "%%b"=="файлов:" (Set flag=1) Else Set flag=0)
 Call:SUM !Cnt! !dirsize4! Cnt
))

Последний раз редактировалось amel27, 05-05-2011 в 17:28. Причина: очепятка

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:04, 05-05-2011 | #42


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


amel27, нужна помощь в правке скрипта (финальный кусок). Какая-то ошибка, вместо размера в 0,3 Мб, отражается размер 3000,0 Мб. Не могу разобраться в математике.
читать дальше »
Код: Выделить весь код
@Echo Off
  SetLocal enabledelayedexpansion

Set Cnt=10

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/
echo        Очистка выполнена, всего удалено %dirsizeMB%,%$.mb% Мб

ping 127.0.0.1 -n 7 >nul

exit

:SUM  %uint%  %uint%  %VarRes%
::----------------------------
SETLOCAL EnableDelayedExpansion
(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%
::----------------------------
 SETLOCAL EnableDelayedExpansion
(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%
::----------------------------
(SETLOCAL EnableDelayedExpansion
 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
скрипт

Отправлено: 13:10, 21-05-2011 | #43


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


sov44, что-то не так с примером - для 10 байт (CNT=10) никогда не будет 0,3 Mb

Отправлено: 13:32, 21-05-2011 | #44


Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


sov44,
Можно с помощью du, мне кажется короче:
Код: Выделить весь код
@echo off
setlocal
1>nul chcp 1251

du -q "C:\Folder" | findstr "Size:"
Или завернуть:
Код: Выделить весь код
@echo off
1>nul chcp 1251
setlocal enabledelayedexpansion

for /f "tokens=2*" %%i in (' du -q "c:\folder" ^| findstr "Size:" ') do call:set %%i %%j

echo %size%
goto:eof

:set
for %%i in (%*) do set "size=!size!%%i"
set "size=%size:bytes=%"
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:52, 21-05-2011 | #45


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


amel27, как я уже написал, это кусок скрипта, в котором cnt накопительная байтов от очистки временных файлов. Значение 10 взято условно.
Прошу проверить только математику.

Последний раз редактировалось sov44, 21-05-2011 в 15:07.


Отправлено: 14:45, 21-05-2011 | #46


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


sov44, не уверен, что проблема только в "математике", для проверки мне нужно воспроизвести у себя ошибку, т.е. нужно знать версию Windows и состояние всех переменных окружения перед входом в блок, для чего достаточно вставить команду вывода значений переменных в файл:
Код: Выделить весь код
SET>set.log
P.S. способ получения полного лога: http://forum.oszone.net/post-1675364-18.html
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:37, 21-05-2011 | #47


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


amel27, операционная система Windows XP SP3, полный лог и сам батник во вложении.

Последний раз редактировалось sov44, 06-12-2011 в 22:29.


Отправлено: 16:06, 22-05-2011 | #48


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата sov44:
лог и сам батник во вложении »
в логе не вижу ошибок (проверил на калькуляторе):
Код: Выделить весь код
   437460     байт CNT до чистки корзины
   -----------
C: +1736       байт (20906795008 свободно)
D: +3837330463 байт ( 8705867776 свободно)
E: +255        байт ( 3313324032 свободно)
   -----------
   3837769914 байт
   3659,98    Мб
   3,57       Gb

Отправлено: 16:54, 22-05-2011 | #49


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


amel27, батник запускался на компьютере родственников. ( за 150 км от постоянного места дислокации ) Лог писался там-же. Вернулся домой, этот-же батник, в такой-же винде работает правильно. Косяк не скрипта, сорри.

Отправлено: 20:16, 22-05-2011 | #50



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] получить размер каталога с подкаталогами

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Копирование самого позднего по дате создания каталога. SANIOK_AV Скриптовые языки администрирования Windows 2 04-12-2009 17:29
Разное - [решено] удаление каталога с подкаталогами lud Microsoft Windows 2000/XP 2 02-07-2009 15:57
CMD/BAT - [решено] Поиск каталога и копирование всего его содержимого desk Скриптовые языки администрирования Windows 4 01-07-2009 14:28
Интерфейс - [решено] цвет шрифта каталога tref2me Microsoft Windows 2000/XP 4 07-06-2008 07:43
[решено] Идентификация каталога c помощью shell programmist72 Общий по Linux 14 13-11-2006 10:06




 
Переход