View previous topic :: View next topic |
Author |
Message |
Hjkma
Joined: 18 Apr 2015 Posts: 178
|
(Separately) Posted: Thu Mar 17, 2016 01:35 Post subject: Показать средний размер файлов в папках |
|
|
Нужно чтобы в TC можно узнать в каких папках сколько в среднем занимают файлы. То есть, узнать средние значения, общий размер файлов на количество файлов. Нужно это чтобы быстро вычислить "тяжелые" папки, в которых слишком много файлов большого битрейта или несжатых файлов. Поэтому хотелось бы настроить набор колонка "Размеры папок" и там добавить такую колонку, которая это и показывает. В каких плагинах искать данную возможность, то есть где найти данную колонку? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Mar 17, 2016 03:09 Post subject: |
|
|
Настройка для SCP:
script.ini Code: | [Script]
Section=MiddleSize
[MiddleSize]
Script=MiddleSize.vbs
ParseDirs=1 |
+ вариант с байтами как в подробном виде:
MiddleSize.vbs Code: | With CreateObject("Scripting.FileSystemObject")
If .FolderExists(FileName) Then
Set Files = .GetFolder(FileName).Files
Count = Files.Count
If Count Then
For Each F in Files
S = S + F.Size
Next : Size = " " & Round(S/Count, 0)
For i = Len(Size) To 3 Step - 3
C = " " & Mid(Size, i - 2, 3) & C
Next : Content = LTrim(C)
End If
End If
End With |
либо с указанием размеров:
MiddleSize.vbs Code: | With CreateObject("Scripting.FileSystemObject")
If .FolderExists(FileName) Then
Set Files = .GetFolder(FileName).Files
Count = Files.Count
If Count Then
For Each F in Files
S = S + F.Size
Next : C = S/Count
If C >= 1073741824 Then
C = C/1073741824 : S = "Гб"
ElseIf C >= 1048576 Then C = C/1048576 : S = "Mб"
ElseIf C >= 1024 Then C = C/1024 : S = "Кб"
Else : S = "байт" : C = Round(C, 0) : A = Right(C, 1)
If Left(Right(C, 2), 1) <> 1 And (A > 1 And A < 5) Then S = "байта"
End If : Content = Replace(Round(C, 3), ",", " ") & " " & S
End If
End If
End With |
В обоих случаях имеет смысл установить -> (выравнивание по правому краю). Выводить через [=script.Result]. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Hjkma
Joined: 18 Apr 2015 Posts: 178
|
(Separately) Posted: Thu Mar 17, 2016 12:44 Post subject: |
|
|
А что это и где это взять? И в каких папках положить два файла?
Upd. Разобрался, большое спасибо за скрипт!
Добавлено спустя 59 минут:
И еще одно пожелание. А возможно ли сделать так, чтобы показать средний размер всех файлов в подпапках, а не только в одной папке? То есть, если в одной папке есть 4 папок с файлами внутри, то хотелось бы узнать общий средний размер всех файлов в 4 папках. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Mar 17, 2016 15:01 Post subject: |
|
|
Можно, но не уверен, что по скорости устроит. Какой скрипт выбран? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Hjkma
Joined: 18 Apr 2015 Posts: 178
|
(Separately) Posted: Thu Mar 17, 2016 15:12 Post subject: |
|
|
Flasher
Второй |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Mar 17, 2016 17:20 Post subject: |
|
|
Hjkma
ОК. Нулевые и проблемные папки будут проигнорированы.
MiddleSize.vbs Code: | Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FolderExists(FileName) Then
On Error Resume Next
C = FSO.GetFolder(FileName).Size
If Err.Number = 0 And C > 0 Then
On Error Goto 0
Dim Count : ForFolder FileName : C = C/Count
If C >= 1073741824 Then
C = C/1073741824 : S = "Гб"
ElseIf C >= 1048576 Then C = C/1048576 : S = "Mб"
ElseIf C >= 1024 Then C = C/1024 : S = "Кб"
Else : S = "байт" : C = Round(C, 0) : A = Right(C, 1)
If Left(Right(C, 2), 1) <> 1 And (A > 1 And A < 5) Then S = "байта"
End If : C = Replace(Round(C, 3), ",", " ") : N = InStrRev(C, " ")
If N > Len(C) - 3 Then C = Left(C, N) & Left(Mid(C, N + 1) & "00", 3)
Content = C & " " & S
End If
End If : Set FSO = Nothing
Sub ForFolder(Folder)
Set Folder = FSO.GetFolder(Folder)
Count = Count + Folder.Files.Count
For Each F In Folder.SubFolders : ForFolder F : Next
End Sub |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Thu Mar 17, 2016 18:18; edited 1 time in total |
|
Back to top |
|
|
Hjkma
Joined: 18 Apr 2015 Posts: 178
|
(Separately) Posted: Thu Mar 17, 2016 18:06 Post subject: |
|
|
Flasher
Спасибо. Все работает! |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Mar 17, 2016 18:20 Post subject: |
|
|
Hjkma
ОК. Я там ещё нолики для Гб/Мб/Кб на концах добавил там, где нет. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Thu Mar 17, 2016 18:56 Post subject: |
|
|
average |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Mar 17, 2016 19:49 Post subject: |
|
|
Quote: | average | Mean. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Hjkma
Joined: 18 Apr 2015 Posts: 178
|
(Separately) Posted: Sun Feb 05, 2017 13:28 Post subject: |
|
|
Flasher
Не могли бы вы портировать скрипт на WinScript Advanced Content Plugin, просто перешел на 64bit, а оказалось, что нету 64битной версии плагина Script Content Plugin. Читал в теме плагина, что можно переносить скрипты и движок вроде тот же самый... |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Feb 05, 2017 14:57 Post subject: |
|
|
Hjkma
Так а в чём проблема с переносом? Прописать в ini нужные строки по одному из примеров? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Hjkma
Joined: 18 Apr 2015 Posts: 178
|
(Separately) Posted: Sun Feb 05, 2017 15:18 Post subject: |
|
|
Flasher
У меня с этими строками в ini ничего не получается, поле есть, а числа размеров нет. Ключ MiddleSize выше прописывал последним.
Quote: | [MiddleSize]
Script=MiddleSize.vbs
content=Middle Size
extensions=*
FoldersPaths=0 |
И скрипт кидал в соответствующую папку. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Feb 05, 2017 15:29 Post subject: |
|
|
Hjkma
Манипуляция с ключом ActiveScripts проведена?
И: FoldersPaths=1 _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Hjkma
Joined: 18 Apr 2015 Posts: 178
|
(Separately) Posted: Sun Feb 05, 2017 15:33 Post subject: |
|
|
Flasher
Поставил единичку, теперь заработало. Спасибо.
Добавлено спустя 18 минут:
Еще есть проблема. В числах вместо запятой идут пробелы, например вместо 1,202 Mb идет 1 202 Mb, а вместо 204,244 Kb идут 204 244 Kb. Это сбивает с толку. Копировал текст последнего скрипта как есть. |
|
Back to top |
|
|
|