Trueman777 |
19-11-2014 21:51 2432214 |
Средний размер файла в папке (без учета подпапок)
Подскажите скрипт, если такой есть, как узнать средний размер файла в папке (файлов много)? Среднее арифметическое, но можно до кучи и среднее геометрическое :)
Только корневой каталог, без файлов в подпапках.
Также интересует выяснение среднего размера группы конкретных выбранных (/выделенных) файлов, не через общий размер, выданный Проводником, деленный на количество. И не через сторонние файл-менеджеры.
Спасибо.
|
PowerShell:
Код:
Get-ChildItem -File -Force | Measure-Object Length -Average
|
Код пакетного файла:
Код:
@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
.
|
Цитата:
Цитата 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
|
Trueman777 |
21-11-2014 07:20 2433004 |
Спасибо.
/решено.
|
Время: 13:26.
© OSzone.net 2001-