|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Средний размер файла в папке (без учета подпапок) |
|
Любой язык - [решено] Средний размер файла в папке (без учета подпапок)
|
Новый участник Сообщения: 46 |
Подскажите скрипт, если такой есть, как узнать средний размер файла в папке (файлов много)? Среднее арифметическое, но можно до кучи и среднее геометрическое
![]() Только корневой каталог, без файлов в подпапках. Также интересует выяснение среднего размера группы конкретных выбранных (/выделенных) файлов, не через общий размер, выданный Проводником, деленный на количество. И не через сторонние файл-менеджеры. Спасибо. |
|
Отправлено: 21:51, 19-11-2014 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать |
Отправлено: 22:25, 19-11-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 874
|
Профиль | Отправить 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
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Спасибо.
/решено. |
|
Отправлено: 07:20, 21-11-2014 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|