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

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

Ответить
Настройки темы
Любой язык - [решено] Средний размер файла в папке (без учета подпапок)

Новый участник


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

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


Подскажите скрипт, если такой есть, как узнать средний размер файла в папке (файлов много)? Среднее арифметическое, но можно до кучи и среднее геометрическое
Только корневой каталог, без файлов в подпапках.

Также интересует выяснение среднего размера группы конкретных выбранных (/выделенных) файлов, не через общий размер, выданный Проводником, деленный на количество. И не через сторонние файл-менеджеры.

Спасибо.

Отправлено: 21:51, 19-11-2014

 

Ветеран


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

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


PowerShell:
Код: Выделить весь код
Get-ChildItem -File -Force | Measure-Object Length -Average
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:25, 19-11-2014 | #2



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

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


Ветеран


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

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


Код пакетного файла:


Код: Выделить весь код
@echo off

set "dir=I:\Downloads"

pushd "%dir%"

::================================================================================================================

rem Код работает очень быстро.
rem Средний размер файла определяется с помощью JS (для решения проблемы "2147483648").
rem Результат выводится в виде: "количество_файлов<пробел>общий_рамер_файлов_в_байтах<пробел>средний_размер_файла_в_байтах".
rem ""delims=FilesBytes: ""-- для удобства запоминания по аналогии с "findstr "Files Bytes"".

for /f "delims=FilesBytes: " %%i in ('"chcp 1252>nul& robocopy . %random% /bytes /l /nfl /ndl /njh| findstr "Files Bytes""') do set /a n+=1& call set x%%n%%=%%i
mshta "javascript:new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write('%x1% %x2% '+%x2%/%x1%);close();"| more

::================================================================================================================

popd

pause>nul
exit /b

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

Отправлено: 05:05, 20-11-2014 | #3


Ветеран


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

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


Цитата Trueman777:
Подскажите скрипт, если такой есть, как узнать средний размер файла в папке (файлов много)? Среднее арифметическое, »
WSH
Код: Выделить весь код
Option Explicit

Dim strSourceFolder

Dim objFolder
Dim objFile

Dim lngTotalSize


If WScript.Arguments.Count = 1 Then
	strSourceFolder = WScript.Arguments.Item(0)
	
	With WScript.CreateObject("Scripting.FileSystemObject")
		If .FolderExists(strSourceFolder) Then
			With .GetFolder(strSourceFolder)
				If .Files.Count <> 0 Then
					lngTotalSize = 0
					
					For Each objFile In .Files
						lngTotalSize = lngTotalSize + objFile.Size
					Next
					
					WScript.Echo FormatNumber(lngTotalSize / .Files.Count)
				Else
					WScript.Echo "Nothing found."
				End If
			End With
		Else
			WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
			WScript.Quit 2
		End If
	End With
Else
	WScript.Echo "Usage: " & WScript.ScriptName & " <Source folder>"
	WScript.Quit 1
End If

WScript.Quit 0

Пакетный файл
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=%~1

if defined sSourceFolder (
	if exist "%sSourceFolder%\." (
		pushd "%sSourceFolder%"
		
		>nul 2>&1 dir /b /a:-d "*.*" && (
			set /a iTotalSize = 0
			set /a iTotalCount = 0
			
			for /f "usebackq delims=" %%i in (
				`2^>nul dir /b /a:-d "*.*"`
			) do (
				set /a iTotalSize += %%~zi
				set /a iTotalCount += 1
			)
			
			set /a iAverage = iTotalSize / iTotalCount
			echo !iAverage!
		) || echo Nothing found.
		
		popd
	) else (
		echo Can't find source folder [%sSourceFolder%].
		exit /b 2
	)
) else (
	echo Usage: %~nx0 ^<Source folder^>
	exit /b 1
)

endlocal
exit /b 0

Достаточно просто перетащить папку на скрипт или пакетный файл (или на их ярлык) из Проводника.

Цитата Trueman777:
но можно до кучи и среднее геометрическое »
Нельзя.

Цитата Trueman777:
Также интересует выяснение среднего размера группы конкретных выбранных (/выделенных) файлов, не через общий размер, выданный Проводником, деленный на количество. »
WSH
Код: Выделить весь код
Option Explicit

Dim strArgument

Dim lngTotalSize
Dim lngTotalCount


If WScript.Arguments.Count <> 0 Then
	With WScript.CreateObject("Scripting.FileSystemObject")
		lngTotalSize = 0
		lngTotalCount = 0
		
		For Each strArgument In WScript.Arguments
			If .FileExists(strArgument) Then
				lngTotalSize = lngTotalSize + .GetFile(strArgument).Size
				lngTotalCount = lngTotalCount + 1
			Else
				WScript.Echo "Can't find file [" & strArgument & "]."
			End If
		Next
		
		If lngTotalCount <> 0 Then
			WScript.Echo FormatNumber(lngTotalSize / lngTotalCount)
		Else
			WScript.Echo "Nothing found."
		End If
	End With
Else
	WScript.Echo "Usage: " & WScript.ScriptName & " <File1> [<File2> [<File3> …]]"
	WScript.Quit 1
End If

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

Отправлено: 14:28, 20-11-2014 | #4


Новый участник


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

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


Спасибо.
/решено.

Отправлено: 07:20, 21-11-2014 | #5



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - найти в папке содержащей много подпапок файлы типа *.bin yas_ Скриптовые языки администрирования Windows 3 30-08-2014 23:52
VBS/WSH/JS - Переименование первых подпапок в каждой папке ruslaw Скриптовые языки администрирования Windows 4 25-10-2013 10:36
CMD/BAT - [решено] Выполнить А если размер файла с логом 0 и В если размер больше 0 AlexxBross Скриптовые языки администрирования Windows 4 16-10-2013 14:14
php функция переноса строки без учета пробела dima1981 Вебмастеру 5 16-11-2008 10:29
Увеличить размер диалога открытия файла (без утилит). ShaRP Microsoft Windows 95/98/Me (архив) 1 23-09-2003 16:11




 
Переход