Страница 1 из 1
Вывод числа и средней длины строк в текстовых файлах
Добавлено: Сб дек 03, 2016 10:46
BeardFury78
Приветствую всех. Ищу способ, как установить колонки в Total commander, которые бы отображали количество строк и среднее количество знаков в строках в текстовых файлов. Есть ли плагины, которые позволяют это сделать?
Добавлено: Сб дек 03, 2016 13:24
Flasher
1. Не тот раздел.
2. Годный заголовок - "Вывод числа и средней длины строк".
3. Нет плагинов. Все кодировки не учесть.
4. Частично (для нек. кодировок) можно сделать на
этом.
Добавлено: Сб дек 03, 2016 13:39
Avada
BeardFury78
К вышесказанному добавляю:
Заголовок действительно неважный.
Исправлено.
В общем виде задача практически не решается. Частные случаи с подсчётом числа строк (но не средней длины) для конкретных видов документов на форуме рассматривались:
CDocProp (см. также
здесь),
LineCount (к тому же плагин архиваторный, это не колонки). В "Автоматизации" —
здесь.
Пока что переношу в подфорум по автоматизации отдельной темой.
Добавлено: Сб дек 03, 2016 14:09
BeardFury78
Спасибо за ответы. CDocProp - он вроде только для вордовских файлов, а хотелось бы с файлами с расширениями txt и с кодировкой UTF-8. А преобразовать txt файлы в вордовские - долгое занятие (вручну все переносить в Word и сохранять). Простая замена расширения не помогает. Насчет LineCount - судя по описанию чтобы получить информацию об числе строк, нужно совершить кучу телодвижений, а хотелось бы все же это увидеть через колонки в Тотале.
Пробую сейчас vbs-скрипт. Пока что выдает ошибку недопустимого знака в первом строке и первом символе, но весь код был скопирован правильно и параметры тоже. А поддерживает ли этот скрипт txt файлы?
4. Частично (для нек. кодировок) можно сделать на этом.
И как это сделать? К сожалению, я совершенно не разбираюсь в скриптописании.
Добавлено: Сб дек 03, 2016 14:36
Flasher
BeardFury78 писал(а):И как это сделать?
Скрипт писать. У меня, в принципе, есть ANSI-заготовка. UTF-8 то же число строк покажет. А вот число символов будет уже другим. Тут нужно вычислять кодировку. Кроме UTF-8 точно ничего не надо? Ни ANSI, ни UTF-16?
Добавлено: Сб дек 03, 2016 14:38
BeardFury78
Flasher
Только UTF-8
Добавлено: Сб дек 03, 2016 15:12
Flasher
|MeanCount дописать в конец ключа ActiveScripts файла
options.ini и добавить секцию
[MeanCount]
Script=MeanCount.vbs
content=Число строк
content1=Средняя длина строк
FoldersPaths=0
extensions=txt|text|lst|ini|etc
Список красным составляем самостоятельно.
В папку Scripts кинуть:
[cut="MeanCount.vbs"]
Код: Выделить всё
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
[/cut]Перезапустить ТС, выбрать поля для колонок.
Число строк всегда верное. Средняя длина неверной будет для UTF-16, со всеми остальными (OEM, ANSI, ASCII, UTF-8, KOI8-R(U), MAC) проблем быть не должно.
Добавлено: Сб дек 03, 2016 15:23
BeardFury78
Flasher
Скрипт успешно работает. Большое вам спасибо, очень выручили этим скриптом!
Добавлено: Сб дек 03, 2016 16:20
Flasher
BeardFury78
Пож-та. Кое-что подправил в скрипте.
Добавлено: Сб дек 03, 2016 19:07
BeardFury78
Flasher
Спасибо, заменил на отредактированный скрипт.