Ветеран
Сообщения: 27449
Благодарности: 8087
|
Профиль
|
Отправить PM
| Цитировать
Цитата Trueman777:
Подскажите скрипт, если такой есть, как узнать средний размер файла в папке (файлов много)? Среднее арифметическое, »
|
WSH
Код: ![Выделить весь код](images/misc/selectcode.png)
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
Пакетный файл
Код: ![Выделить весь код](images/misc/selectcode.png)
@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
Код: ![Выделить весь код](images/misc/selectcode.png)
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
|