Страница 13 из 20

Добавлено: Сб май 11, 2019 19:12
Flasher
NtX писал(а):Имена папок обрабатываться не хотят.
Дело не в папках, а концевом расположении квадратных скобок. Заменил последний + на * в регулярке.

Добавлено: Сб май 11, 2019 22:54
NtX
Да, это срабатывает. Спасибо за разъяснения!

Добавлено: Вс авг 04, 2019 00:57
Dimsok
http://gnuwin32.sourceforge.net/downlinks/coreutils.php

wc.exe - программа для вывода количества строк, слов, символов текстовых файлов. Возможно приспособить её для вывода этих значений в колонки?

Добавлено: Вс авг 04, 2019 08:23
Flasher
wc (для UnxUtils не нужна libintl3.dll) не справляется с UTF-кодировками при подсчёте символов и слов. Для ANSI число символов эквивалентно числу байт, там и думать не надо. Вообще со словами не всё однозначно. Надо перепроверять с разными делителями, цифрами и т. д.
Число строк см. здесь.

Добавлено: Пн авг 05, 2019 01:45
Dimsok
Мне то важнее как раз был подсчёт слов.

Добавлено: Пн авг 05, 2019 13:06
Flasher
Ну, сформулируй, что не считать словами, т. к. wc всякую ерунду к ним причисляет.

Добавлено: Вт авг 06, 2019 01:06
Dimsok
Проверил ещё, у меня wc работает с utf8, utf16.

Словами не считать пробелы.

Добавлено: Вт авг 06, 2019 01:19
Flasher
Работает, но некорректно.

Т.е. 11111, 938402, &^%#^*))@!, ////// — это слова?

Добавлено: Вт авг 06, 2019 01:33
Dimsok
Так же, как с ansi. Погрешности вполне приемлемы.
Ещё хотелось бы знать, возможно ли использование в паре с другой программой. Например, кнопка с параметрами:

"%%COMMANDER_PATH%%\Plugins\exe\balabolka\Text extract\balabolka_text" -f "%%#" -o |"%%COMMANDER_PATH%%\Plugins\exe\unxutils\wc.exe" -w -m

Позволяет узнавать количество слов в электронных книгах типа epub, fb2 и т.п, пусть и с задержанием.
Т.е. 11111, 938402, &^%#^*))@!, ////// — это слова?
Ну если возможно, можно, конечно, исключить полностью небуквенные сочетания.

Добавлено: Вт авг 06, 2019 01:58
Flasher
Погрешности вполне приемлемы.
В подсчёте числа символов — не приемлемы. Тем более такие, как в случае с UTF-16.

Балаболка конвертирует epub/fb2 в текстовый файл что ли?

Исключить можно. Но помимо пробела и знаков препинания есть ряд других разделителей. Вот сколько здесь слов, например?:
"Я положил файл в директорию C:\папка!\@папка2\Ad&Remove\354блабла3р5\x\y\z\test и указал * спереди в поле Команда, прописал в регулярном выражении ^(?:name|xxx?|full)\.ext$ но программа не запустилась?"

Добавлено: Вт авг 06, 2019 02:13
Dimsok
Балаболка конвертирует epub/fb2 в текстовый файл что ли?
Утилита от её создателя. Именно так, их, и ещё много разных других.

21, если не считать словами те случаи, когда между ними нет пробелов.

Добавлено: Пн сен 02, 2019 22:18
Flasher
А я тут вижу 34 буквенных "слова". Набросал следующее:

Код: Выделить всё

;::::::::::::::::::::::::::::::: SWLcount.au3 ::::::::::::::::::::::::::::::
; Назначение: получение числа символов, слов, строк для информационных полей

; Положить blb2txt.exe в %COMMANDER_PATH%\Plugins\wdx\WinScriptsAdv\Scripts\
; Программа доступна по следующей ссылке:  http://balabolka.site/blb2txt.zip
; Поддержка: azw, azw3, chm, djvu, doc(x), eml, epub, fb2, fb3, htm(l), odp,
; ods, odt, mobi, litmht, pdb, pdf, ppt(x), prc, rtf, tcr, wpd, wri, xls(x),
; а также любых текстовых файлов по списку заданных в options.ini расширений
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#NoTrayIcon
Opt('MustDeclareVars', 1)
Dim $FileName
If FileGetSize($FileName) = 0 Then
  $FileName = ObjCreate('Shell.Application').NameSpace(0).ParseName($FileName).ExtendedProperty('LinkTarget')
  If Not $FileName Then Exit
  If Not FileGetSize($FileName) Then Exit
EndIf
Dim $Ext, $PID, $Text, $Text2, $Content, $Content1, $Content2
$Ext = StringRegExp($FileName, '((?<=\.)[^.]+|)$', 1)[0]
If Not $Ext Then Exit
If StringInStr('|azw|azw3|chm|djvu|doc|docx|eml|epub|fb2|fb3|htm|html|lit|mht|mobi|odp|ods|odt|pdb|pdf|ppt|pptx|prc|rtf|tcr|wpd|wri|xls|xlsx|', '|' & $Ext & '|', 2) Then
  $PID = Run('"' & EnvGet('COMMANDER_PATH') & '\Plugins\wdx\WinScriptsAdv\Scripts\blb2txt.exe" -f "' & $FileName & '" -o -rpn -sn -ss','', 0, 2)
  While 1
    $Text = StdoutRead($PID, 1)
    If $Text Then
      If $Text = $Text2 Then ExitLoop
    EndIf
    $Text2 = $Text
  WEnd
  $Text2 = ''
  StdioClose($PID)
Else
  Dim $oFile
  $oFile = FileOpen($FileName)
  $Text  = FileRead($oFile)
  FileClose($oFile)
EndIf
$Content  = StringLen($Text)
$Content1 = UBound(StringRegExp($Text,'\R', 3)) + 1
$Content2 = UBound(StringRegExp($Text,'\p{L}+-?\p{L}*', 3))
$Text = ''
options.ini писал(а):[Script]
ActiveScripts=...|SymbolsWordsLinesCount

; тут остальное

[SymbolsWordsLinesCount]
Script=SWLCount.au3
content=Символов
content1=Строк
content2=Слов
extensions=azw|azw3|bar|chm|cfg|conf|djvu|doc|docx|eml|epub|fb2|fb3|inf|ini|ion|htm|html|lit|lng|log|lst|me|mht|mobi|odp|ods|odt|pdb|pdf|ppt|pptx|prc|rtf|tcr|text|txt|wpd|wri|xls|xlsx
|etc
FoldersPaths=0
См. корректность значения ключа au3. Вместо etc дописываем свои нужники.
Как и ожидалось, получаем сопутствующие тормоза. В колонки выводить, наверное, не стоит. На больших/mobi будут наблюдаться вылеты балаболки. Лучше — в подсказках.

Добавлено: Чт июл 09, 2020 07:00
dzigloTC
Доброе утро всем участникам.
В отделе «Общие вопросы» я открыл тему, но меня оттуда направили сюда. Поэтому копирую свой вопрос здесь.

Прошу помочь в насущном для меня вопросе.
В ТС возможен поиск текста внутри word-файлов в различной кодировке.
А как можно искать текст в файлах формата djvu? Может есть хотя бы какие-нибудь плагины и т.п.?
Очень нужно. Много djvu-файлов книг и в них нужно часто искать слова и фразы.

Добавлено: Чт июл 09, 2020 07:46
Flasher
dzigloTC
Технически тут поиск возможен по заранее заданным шаблонам (в коде или соседнем списке), а не через диаложное поле поиска. Если подобное устраивает, то в последнем скрипте нужно править только нижние строки с $Content№. Если нет, то тогда нужно внедрять blb2txt в PCREsearch и там что-то придумывать.

Добавлено: Чт июл 09, 2020 09:10
dzigloTC
Flasher писал(а):dzigloTC
Технически тут поиск возможен по заранее заданным шаблонам (в коде или соседнем списке), а не через диаложное поле поиска. Если подобное устраивает, то в последнем скрипте нужно править только нижние строки
Вы не могли бы подробнее рассказать, как это сделать? Я в плагинах ТС вообще ничего не понимаю.