Вывод descript.ion в файл удобочитаемый

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

slideray
Сообщения: 115
Зарегистрирован: Пн июн 28, 2010 09:34

Вывод descript.ion в файл удобочитаемый

Сообщение slideray »

Как вывести содержимое descript.ion в *.txt, в читабельном виде?
Т.е. чтобы были сохранены переносы строк и желательно отделялось имя файла, скажем, тем же переносом строки.

Есть ли листер плагин, позволяющий корректно отображать descript.ion, сохраняя форматирование?
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Плагина нет. Думаю, по очень простой причине - это никому, кроме тебя, не нужно.
Есть программы, производящие пакетную замену, в том числе и из командной строки. Ссылки и названия давать не буду, чтобы не нарушить. Эти программы могут заменить \n на реальный перевод строки.
А вот отделять имя файла от комментария будет посложнее. Жди, пока кто-то из наших гуру напишет скрипт. Я пас, потому что сейчас занят, а полезность задачи лично для себя не вижу.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

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

TOTALCMD#BAR#DATA
%comspec% /k chcp 1251>nul &ssed.exe
-r -e s/(^\"[^\"]+\")*\s/\1\n/;s/В$/\n\n/g;s/\\n/\n/g; descript.ion
shell32.dll,1
что в descript.ion ?


-1

окно закрывать [x]-м
sed тоже работает
slideray
Сообщения: 115
Зарегистрирован: Пн июн 28, 2010 09:34

Сообщение slideray »

Tol!k
Выглядит очень интересно, насколько я понял это кнопка? Можно немного подробнее об использовании, у меня при нажатии в окне командной строки выводится следующий текст:

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

"ssed.exe" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
...и ничего не происходит. Что вообще нужно ждать от скрипта, что и как он делает?

[mod="Avada"]Избыточное цитирование удалено. Соблюдаем правила.[/mod]
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Это кнопка. Установка курсора на descript.ion не важна.
В папку, прописанную в %path% нужно положить http://sed.sourceforge.net/grabbag/ssed/sed-3.62.zip или любой windows-порт sed (при этом нужно будет в кнопке исправить ssed.exe на sed.exe)
Или прописать полный путь %commander_path%\Utils\ssed.exe
slideray
Сообщения: 115
Зарегистрирован: Пн июн 28, 2010 09:34

Сообщение slideray »

Отлично, работает! Спасибо. То что нужно.
А возможно ли прописать это по такой схеме:
файл "ssed.exe" лежит в определенной папке и к нему происходит обращение,
после чего обрабатывался каталог активной панели,
листинг выдается в текстовом файле, сохраняемом рядом с descript.ion с именем descript.txt
(дискомфорт вызывает необходимость укладывать файл ssed.exe в папку рядом c descript.ion, листинг требует дополнительной обработки - выковыривания из командной строки)

Вообще грандиозно было бы - вычленение коментариев из выделенных файлов (в текстовый файл или буфер обмена) по той же схеме форматирования:
"Имя файла" (перенос строки)
Коментарий
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

slideray
Если необходимо только отображение (без формирования дополнительных файлов), то можно использовать Script plugin-maker.
Для треуемой задачи файл wlx_vbscript.vb:

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

font_name            = "Fixedsys" 
font_size            = 12 
view_end             = "false" 
view_wrap            = "true" 
view_scroll          = "both" 
view_backgroundcolor = "white" 
view_textcolor       = "black" 

Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")

result_text = ""

If LCase(FSO.GetFileName(file_name)) = "descript.ion" Then
  ReadFile
  RegReplace "\r", ""
  RegReplace "^([^ ""]+)\s+", """$1"" "
  RegReplace "^""([^""]+)""\s+(.+)$", "$1" & vbNewLine & "      $2"
  RegReplace "\\n", vbNewLine & "      "
  RegReplace Chr(4) & "В$", ""
End If

Sub ReadFile() 
  AddLine FSO.OpenTextFile(file_name, 1).ReadAll
End Sub 

Sub RegReplace(a, b)
  With New RegExp 
    .Global     = True
    .IgnoreCase = True
    .MultiLine  = True
    .Pattern    = a 
    result_text = .Replace(result_text,b)
  End With
End Sub
slideray писал(а):дискомфорт вызывает необходимость укладывать файл ssed.exe в папку рядом c descript.ion
Этого не нужно делать:
Tol!k писал(а):Или прописать полный путь %commander_path%\Utils\ssed.exe
Т.е. в кнопке пиши не просто ssed.exe, а с путём.
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

slideray писал(а):дискомфорт вызывает необходимость укладывать файл ssed.exe в папку рядом c descript.ion
не надо рядом,
надо в одну из папок, перечисленных в %path% (напр. C:\Windows\) удобнее свою папку с подобными утилитами добавить к %path%
или прописать в кнопке полный путь к ssed.exe

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

TOTALCMD#BAR#DATA
%comspec% /c chcp 1251>nul &>descript.txt ssed.exe
-r -e s/(^"[^"]+")*\s/\1\n/;s/В$/\n\n/g;s/\\n/\n/g; descript.ion
shell32.dll,1
descript.ion > descript.txt

1
-1
обрабатывается текущий каталог (без подпапок),
листинг выдается в текстовом файле, сохраняемом рядом с descript.ion с именем descript.txt

slideray писал(а):Вообще грандиозно было бы - вычленение коментариев из выделенных файлов (в текстовый файл или буфер обмена)
выделено несколько descript.ion'ов ? или что?
slideray
Сообщения: 115
Зарегистрирован: Пн июн 28, 2010 09:34

Сообщение slideray »

Tol!k писал(а):выделено несколько descript.ion'ов ? или что?
Нет, не descript.ion'ов, а из выделеных файлов (папок), в которых имеются коментарии (если среди выделенных файлов (папок) нет коментариев, они соответственно пропускаются).

Добавлено спустя 20 минут:
Batya писал(а):...можно использовать Script plugin-maker.
Эх, вообще не понял как им пользоваться (
Как wlx-плагин не хочет устанавливаться, пишет при установке "программа не запускается! (5)" да и как он работал бы тоже не понимаю.
в мануале к плагину написано:
В каталоге должен обязательно находиться текстовый файл
с именем как у плагина и расширением *.vb или *.js
То есть
wlx_vbscript.js - программа на VBScript
wlx_vbscript.vb - программа на JScript
а в самом файле допускается несколько скриптов?
Если возможно, дайте пожалуйста хотя бы краткое руководство по использованию плагина, возможности у него интересные.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

slideray писал(а):
выделено несколько descript.ion'ов ? или что?
Нет, не descript.ion'ов, а из выделеных файлов (папок), в которых имеются коментарии
в каком формате и как их отличить от других файлов
slideray писал(а):(если среди выделенных файлов (папок) нет коментариев, они соответственно пропускаются)
?

Или таки нужно вычленение из descript.ion комментов для выделенных файлов по типу http://forum.wincmd.ru/viewpost.php?p=58180 но с перенаправлением не в поток, а в другой файл?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

slideray писал(а):Эх, вообще не понял как им пользоваться (

Как wlx-плагин не хочет устанавливаться, пишет при установке "программа не запускается! (5)" да и как он работал бы тоже не понимаю.
Проверил, всё работает. Win7 x86 TC 7.56a. А работает просто: отображается содержимое в текстовом формате, обработанное скриптом.
Только я не очень понял, зачем делать переносы строк и отступы под формат дерева.
slideray писал(а):wlx_vbscript.js - программа на VBScript
wlx_vbscript.vb - программа на JScript
Ошибка в описании, VB и J местами надо поменять.
slideray писал(а):а в самом файле допускается несколько скриптов?
Насколько я понял допускается для каждого языка по скрипту, содержимое которого можно настраивать под разные форматы.
slideray писал(а):Если возможно, дайте пожалуйста хотя бы краткое руководство по использованию плагина, возможности у него интересные.
Плагин чисто для скриптописателей. Написать переменные для настроек отображения, что в ридми приводятся и парсер по обработки содержимого файла под курсором или файла имеющего расширение, заданное условием в скрипте.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

slideray писал(а):Эх, вообще не понял как им пользоваться (
Необходимо установить плагин обычным способом (читаем справку). При этом лучше в списке его переместить повыше (чтобы не перехватывался просмотр другими плагинами).
В папку плагина необходимо поместить файл с именем "wlx_vbscript.vb" и вышеприведённым содержимым. С плагином может работать только один скрипт. Даже если в папке есть ещё файл "wlx_vbscript.js", плагин будет использовать "wlx_vbscript.vb" (это есть в Readme.rus). Но никто не мешает этот скрипт "наворачивать" как угодно.
Соответственно, теперь при просмотре по F3 файлов descript.ion будет отображаться обработанный текст.
slideray писал(а):возможности у него интересные
Ну, не очень-то. Оформление можно применять только для всего текста сразу, нельзя применять разное для отдельных фрагментов текста. Не работает копирование.
Flasher писал(а):Только я не очень понял, зачем делать переносы строк и отступы под формат дерева.
Исключительно - мне так захотелось. Мне удобнее так визуально отделять имена файлов от комментариев.
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Batya писал(а):Исключительно - мне так захотелось. Мне удобнее так визуально отделять имена файлов от комментариев.
Я так и подумал, что дело в тебе. Ты же придумывал скрипт. :)
Я бы тогда так сделал:
RegReplace "^""([^""]+)""\s+(.+)$", "$1" & vbNewLine & vbTab & "$2"
RegReplace "\\n", vbNewLine
& vbTab
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Flasher писал(а):Я бы тогда так сделал
Так и сделай.
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Дык не мне ж надо. :)
Ответить