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

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

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

Пользователь


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

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


Доброго времени!
Необходимо в каталоге, который задан первым параметром, а также в его подкаталогах определить суммарный объем всех файлов, расширение которых задано вторым параметром.

За основу я взял текст программы, который был составлен тут:

Код: Выделить весь код
@Echo Off
Set MyDir=C:\lab1\wingraf
Set Ras=.gif
Set Size = 0

Call :_subdir "%MyDir%"
Echo.
Echo All subdirs = %SubDirs%
Pause>Nul
Exit

:_subdir
For /D %%s In ("%~1\*") Do (
	if not %~Xa neq *.gif DO (
		%size% += %~Za )
	Echo %%s > nul
	Call :_subdir "%%~s"
)
GoTo :EOF
Но, как я понял, что-то я напутал в именах переменных в подпрограмме...

Отправлено: 21:07, 29-04-2013

 

Ветеран


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

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


Код: Выделить весь код
@Echo Off
Set MyDir=C:\lab1\wingraf
Set Ras=.gif

Call :_subdir %MyDir% %Ras%
Echo %Size%
Pause>Nul
Exit

:_subdir
For /R %1 %%s In (*) Do if %%~xs==%2 SET /A Size+=%%~zs
EXIT /B
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:36, 29-04-2013 | #2



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

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


Ветеран


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

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


Цитата kelevara:
%size% += %~Za »
Прекрасный метод для сложения пары *.avi
Код: Выделить весь код
> set /a 2147483648+1                             
Неверное число. Числа ограничены 32 битами точности.

>
Пакетные файлы не предназначены для этих целей. PowerShell:

Код: Выделить весь код
Param(
   
   [string] $Path,
   [string] $Extension

)

get-childitem "$Path\$Extension" -recurse | % { $size += $_.length }

$size

Последний раз редактировалось Vadikan, 30-04-2013 в 14:35. Причина: recurs -> recurse

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

Отправлено: 22:46, 29-04-2013 | #3


Пользователь


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

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


Foreigner, я бы и рад использовать что-то другое, python например, но таково задание =(

Отправлено: 23:34, 29-04-2013 | #4


Ветеран


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

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


Цитата kelevara:
но таково задание =( »
Что это значит? Если домашка, то делай сам.

Отправлено: 23:37, 29-04-2013 | #5


Пользователь


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

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


Код: Выделить весь код
@Echo Off
Set MyDir=C:\lab1\wingraf
Set MyExt=gif
Set Size=0
for /f "tokens=*" %%I IN ('dir /b /s "%%MyDir%%\*.%%MyExt%%"') DO (
	set /a Size=Size+%%~zI/1024
	color 8E & echo %%I
)
cls
color 9 & Echo Файлы с расширением .%MyExt% в каталоге %MyDir%\ с подкаталогами имеют суммарный объём, равный %Size% Кбайт.
pause
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:39, 29-04-2013 | #6


Пользователь


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

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


Foreigner, не знаю, домашка или что-то другое. Друг попросил помочь разобраться.

Отправлено: 23:42, 29-04-2013 | #7


Ветеран


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

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


kelevara, ну так чем ответGeorgio, не устраивает? сразу чётко тебя исправили всё работает!

Отправлено: 01:49, 30-04-2013 | #8


Пользователь


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

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


severagent007, я разве говорю, что меня что-то не устраивает? По сабжу - оба кода работают, какой из них выберет друг - не знаю.
Спасибо всем откликнувшимся!

Отправлено: 05:56, 30-04-2013 | #9


Аватара для gora

Ушёл из жизни


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

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


Результат в байтах, размеры файлов значения не имеют:
Код: Выделить весь код
@Echo Off
:: Кодировка Кириллица DOS (866)
Set MyDir=g:\Films
Set ext=avi

For /F "tokens=2*" %%i In ('Dir /s /-c "%MyDir%\*.%ext%" ^| Findstr " файлов"') Do Set size=%%j
Set size=%size: байт=%
Echo Общий размер всех файлов = %size% байт
Pause>Nul

Последний раз редактировалось gora, 30-04-2013 в 16:41. Причина: Учтено замечание kiripanda

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

Отправлено: 14:44, 30-04-2013 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Определение объема трафика drekhaker Скриптовые языки администрирования Windows 3 31-08-2012 14:23
CMD/BAT - [решено] Выбор определенного типа файлов при копировании Aleksander.Ruban@fb Скриптовые языки администрирования Windows 4 25-08-2012 10:21
CMD/BAT - Нахождение суммарного объема файлов XFNeo Скриптовые языки администрирования Windows 5 11-12-2011 15:56
Log/Monitoring - Запрет на запись файлов определенного типа и размера andrei.ru Сетевые технологии 1 20-11-2009 11:53
скачивание файлов определенного типа NIGHT_ANGEL Хочу все знать 11 25-02-2005 06:41




 
Переход