View previous topic :: View next topic |
Author |
Message |
BeardFury78
Joined: 25 Aug 2016 Posts: 213
|
(Separately) Posted: Sat Dec 03, 2016 11:46 Post subject: Вывод числа и средней длины строк в текстовых файлах |
|
|
Приветствую всех. Ищу способ, как установить колонки в Total commander, которые бы отображали количество строк и среднее количество знаков в строках в текстовых файлов. Есть ли плагины, которые позволяют это сделать? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 03, 2016 14:24 Post subject: |
|
|
1. Не тот раздел.
2. Годный заголовок - "Вывод числа и средней длины строк".
3. Нет плагинов. Все кодировки не учесть.
4. Частично (для нек. кодировок) можно сделать на этом. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10268 Location: Россия, Саратов
|
(Separately) Posted: Sat Dec 03, 2016 14:39 Post subject: |
|
|
BeardFury78
К вышесказанному добавляю:
Заголовок действительно неважный. Исправлено.
В общем виде задача практически не решается. Частные случаи с подсчётом числа строк (но не средней длины) для конкретных видов документов на форуме рассматривались: CDocProp (см. также здесь), LineCount (к тому же плагин архиваторный, это не колонки). В "Автоматизации" — здесь.
Пока что переношу в подфорум по автоматизации отдельной темой. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
BeardFury78
Joined: 25 Aug 2016 Posts: 213
|
(Separately) Posted: Sat Dec 03, 2016 15:09 Post subject: |
|
|
Спасибо за ответы. CDocProp - он вроде только для вордовских файлов, а хотелось бы с файлами с расширениями txt и с кодировкой UTF-8. А преобразовать txt файлы в вордовские - долгое занятие (вручну все переносить в Word и сохранять). Простая замена расширения не помогает. Насчет LineCount - судя по описанию чтобы получить информацию об числе строк, нужно совершить кучу телодвижений, а хотелось бы все же это увидеть через колонки в Тотале.
Пробую сейчас vbs-скрипт. Пока что выдает ошибку недопустимого знака в первом строке и первом символе, но весь код был скопирован правильно и параметры тоже. А поддерживает ли этот скрипт txt файлы?
Quote: | 4. Частично (для нек. кодировок) можно сделать на этом. |
И как это сделать? К сожалению, я совершенно не разбираюсь в скриптописании. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 03, 2016 15:36 Post subject: |
|
|
BeardFury78 wrote: | И как это сделать? | Скрипт писать. У меня, в принципе, есть ANSI-заготовка. UTF-8 то же число строк покажет. А вот число символов будет уже другим. Тут нужно вычислять кодировку. Кроме UTF-8 точно ничего не надо? Ни ANSI, ни UTF-16? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
BeardFury78
Joined: 25 Aug 2016 Posts: 213
|
(Separately) Posted: Sat Dec 03, 2016 15:38 Post subject: |
|
|
Flasher
Только UTF-8 |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 03, 2016 16:12 Post subject: |
|
|
|MeanCount дописать в конец ключа ActiveScripts файла options.ini и добавить секцию
Quote: | [MeanCount]
Script=MeanCount.vbs
content=Число строк
content1=Средняя длина строк
FoldersPaths=0
extensions=txt|text|lst|ini|etc
| Список красным составляем самостоятельно.
В папку Scripts кинуть:
MeanCount.vbs Code: | Content = 0 : Content1 = 0
Set FSO = CreateObject("Scripting.FileSystemObject")
Size = FSO.GetFile(FileName).Size
If Size > 0 Then
Content1 = 1
With FSO.OpenTextFile(FileName)
.Skip Size : Content = .Line : .Close
End With
With CreateObject("ADODB.Stream")
.Type = 2 : .Open : .CharSet = "UTF-8"
.LoadFromFile FileName : All = .ReadText : .Close
End With : Set Reg = New Regexp
If Content > 1 Then
Reg.Global = True : Reg.Pattern = "(\r?\n){2,}"
All = Reg.Replace(Reg.Replace(All, vbNewLine), "")
Reg.Pattern = "^\r?\n|\r?\n$"
All = Reg.Replace(All, "") : Reg.Pattern = "\r?\n"
Content1 = Round(Len(Reg.Replace(All, ""))/(Reg.Execute(All).Count + 1), 0)
Else Content1 = Len(All)
End If
End If : Set FSO = Nothing |
Перезапустить ТС, выбрать поля для колонок.
Число строк всегда верное. Средняя длина неверной будет для UTF-16, со всеми остальными (OEM, ANSI, ASCII, UTF-8, KOI8-R(U), MAC) проблем быть не должно. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Wed Dec 14, 2016 03:51; edited 7 times in total |
|
Back to top |
|
|
BeardFury78
Joined: 25 Aug 2016 Posts: 213
|
(Separately) Posted: Sat Dec 03, 2016 16:23 Post subject: |
|
|
Flasher
Скрипт успешно работает. Большое вам спасибо, очень выручили этим скриптом! |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 03, 2016 17:20 Post subject: |
|
|
BeardFury78
Пож-та. Кое-что подправил в скрипте. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
BeardFury78
Joined: 25 Aug 2016 Posts: 213
|
(Separately) Posted: Sat Dec 03, 2016 20:07 Post subject: |
|
|
Flasher
Спасибо, заменил на отредактированный скрипт. |
|
Back to top |
|
|
|