View previous topic :: View next topic |
Author |
Message |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Fri Jun 02, 2006 15:32 Post subject: |
|
|
Помнится, я писал:
Batya wrote: | Хорошо бы увеличить список параметров командной строки. |
И CaptainFlint мне предлагал описать возможные варианты реализации новых параметров (что-то я этот пост найти не могу).
Долго руки не доходили. Вот, наконец, родил:
--------------
За основу берем старые обозначения (причем они все остаются действующими).
Используем следующие старые базовые обозначения:
%P - вставляет в командную строку исходный путь, включая обратную наклонную черту (\) в конце.
%N - помещает в командную строку имя файла под курсором.
%O - помещает в командную строку текущее имя файла без расширения.
%E - помещает в командную строку текущее расширение (без предшествующей точки).
Добавляем новое базовое обозначение:
%S - вставляет в командную строку исходный путь без обратной наклонной черты (\) в конце.
Как и раньше, прописные буквы - длинные имена, строчные буквы - имена в формате "8.3".
Немного меняем старый вариант:
%L - создает файл список по отмеченным файлам. Данное обозначение может идти с параметрами, заключенными в фигурные скобки.
Пример 1, %L{%P%N} - аналог старого %L.
Если параметры не указаны (%L), то создается список %L{%P%N}.
Пример 2, %L{%p%n} - аналог старого %l.
Пример 3, %L{%N} - аналог старого %F.
Пример 4, %L{%n} - аналог старого %f.
Примечание - я только не разобрался со старыми %D и %d. Чем они отличаются от %l и %f, соответственно?
Пример 5, %L{%P} - аналога нет - список исходных путей со слешем в конце. Целесообразно для режима Ctrl+B.
Пример 6, %L{%S} - аналога нет - список исходных путей без слеша в конце.
Внимание:
%l без параметров вернет имя файла-списка со списком из файлов вида %p%n, т.е. старый вариант.
%l с параметрами будет возвращать то же самое, что и %L с такими же параметрами. Т.е. %l с параметрами используется исключительно для совместимости.
Новое обозначение:
%C - счетчик. Целесообразно использовать в файлах-списках.
Пример, %L{ %С. - %P%N} - вернет список вида:
1. - путь1\файл1
2. - путь2\файл2
3. - путь3\файл3
Новое обозначение:
%@ - возвращает строку (!), представляющую из себя список элементов через пробел. Вид списка задается параметрами аналогично %L.
Пример, %@{ %С. - %P%N} - вернет строку вида:
1. - путь1\файл1 2. - путь2\файл2 3. - путь3\файл3
%@ без параметров аналогичен %@{%P%N}.
Новое обозначение:
%B - возвращает пустую строку в файле списке. Для строки ничего не вернет.
Пример, %L{%C%B%P%N} - вернет список вида:
1
путь1\файл1
2
путь2\файл2
3
путь3\файл3
Новое обозначение:
%A - возвращает признак активной панели:
0 - если активна левая панель,
1 - если активна правая панель.
Целесообразно для применения во внешних скриптах.
Теперь префикс:
! - аналогичные значения на пассивной (противоположной) панели. Данный префикс должен работать со всеми вышеописанными обозначениями.
Пример, %!P - аналог старого %T.
Постфикс:
:X - указывается для %L и %@ после параметров. Где X - число, указывающее на количество повторений в списке.
Пример 1, %L{%C%B%P%N}:2 - для 3 выделенных файлов вернет список вида:
1
путь1\файл1
2
путь2\файл2
Пример 2, %@{%C. %P%N}:2 - для 3 выделенных файлов вернет строку вида:
1. путь1\файл1 2. путь2\файл2
%L:X аналогичен %L{%P%N}:X, %@:X аналогичен %@{%P%N}:X.
Обозначения для ввода спецсимволов:
%% - ввод символа "%".
%{ - ввод символа "{".
%} - ввод символа "}".
%: - ввод символа ":".
Ну, вроде, ничего не забыл.
У кого есть предложения и замечания, высказывайте.
-------------
Люди добрые, владеющие английским (CaptainFlint, Funduk ), не мог бы кто-нить запостить на оф. форум это сообщение. Глядишь, Гислер отзовется.
-------------
Правка:
Вот, нашел пост от CaptainFlint. |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6190 Location: Москва
|
(Separately) Posted: Fri Jun 02, 2006 18:04 Post subject: |
|
|
А что, очень даже неплохо... Пожалуй, помимо форума надо будет пнуть Гислера и лично, по мылу.
Если никто не опередит, то заброшу к вечеру на оф. форум. Может быть даже стоит страничку в Вики сбацать, народ там любит это дело.  _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
funduk

Joined: 16 Aug 2005 Posts: 1513 Location: Санкт-Петербург
|
(Separately) Posted: Fri Jun 02, 2006 18:44 Post subject: |
|
|
Я не опережу точно
А про вику - народ любит, а Гислер? |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6190 Location: Москва
|
(Separately) Posted: Fri Jun 02, 2006 19:17 Post subject: |
|
|
Quote: | А про вику - народ любит, а Гислер? |
Так это его идея была. Он ещё, было дело, жаловался, что никто не постит.  _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6190 Location: Москва
|
(Separately) Posted: Fri Jun 02, 2006 21:12 Post subject: |
|
|
Так, в процессе обдумывания придумал такое расширение: сделать возможность обращаться не только к активной (%P) и неактивной (%!P) панелям, но и к левой и правой, независимо от того, какая панель активна в данный момент. Значки не придумывал пока, можно что-то вроде %-P и %+P...
Добавлено:
Ещё идея: наряду с возможностью делать списки "длинных" и DOS-имён добавить юникодный формат. Правда, как бы это обозначить...
Добавлено:
И ещё: счётчик %С можно параметризовать. За основу можно взять систему из инструмента группового переименования, только заключить параметры ещё в одни фигурные скобки. Например:
%C{10+2:3} -> 010, 012, 014... _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6190 Location: Москва
|
|
Back to top |
|
 |
LocKtaR-o-DarK

Joined: 12 Aug 2005 Posts: 349 Location: Москва
|
(Separately) Posted: Sat Jun 03, 2006 08:24 Post subject: |
|
|
Отлично, идеи очень хороши, а главное востребованы, всего этого несомненно не хватает, хотелось бы добавить еще параметр, которого до сих пор так и нет, аналог одновременных %L и %O , то есть копировать список файлов без расширений, обозвать по вкусу... _________________
 |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6190 Location: Москва
|
(Separately) Posted: Sat Jun 03, 2006 11:20 Post subject: |
|
|
Это можно сделать и в предложенном варианте: %L{%O} _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Mon Jun 05, 2006 13:38 Post subject: |
|
|
Есть еще несколько безумных идей %-)
Хочется новую концепцию маскимально приблизить к синтаксису группового переименования файлов, а также сделать возможность формировать файлы-списки требумой сложности.
1. Вместо предложенных ранее фигурных скобок используем квадратные скобки. Это не принципиально, но по обозначениям ближе к синтаксису группового переименования.
2. Число после постфикса : также заключать в квадратные скобки.
Пример - %L:[2]
3. Добавить возможность для шаблонов %L и %@ указывать в качестве числа файлов отрицательное число. Это означает последние <n> выделенных файлов.
Пример - %L:[-2]
Для унификации - %L:[0] должен обрабатываться, как %L.
4. Потенциально, в качестве числа файлов можно использовать диапазон, например, %L:[2-4]. Только надо ли это?
5. Добавить новый шаблон:
%Q - общее число выделенных файлов
Удобно использовать в сочетании со счетчиком %C.
6. Добавить новый шаблон:
%=[параметры] - информация из указанного WDX-плагина
Пример - %=[anytag.Title]
7. В параметрах шаблонов %L и %@ добавить возможность задавать несколько секций, которые обрабатываются отдельно для списка файлов. Такие секции целесообразно задавать, если надо что-то вставить до общего списка файлов и после него. Для разделения секций использовать вертикальную черту.
Пример - %L[Список файлов%: |%P%N|Всего - %Q файлов]
Примечание - в данном примере указано %:, т.к. символ двоеточия вставляется именно этим шаблоном.
8. Хорошо бы еще добавить возможность указать сортировку файлов, отличную от текущей сортировки файлов в TC. Но что-то пока не придумаю, как это можно сделать красиво и удобно.
С указанными параметрами можно формировать файлы произвольной сложности. Например, для формирования плейлиста PLS из отмеченных mp3-файлов используем следующую маску параметров:
%L[%[playlist%]%B|File%C=%P%N%BTitle%C=%=[anytag.Title]%BLength%C=%=[anytag.Length]|NumberOfEntries=%Q%BVersion=2%B]
CaptainFlint
Последний пример - специально для тебя и Lefteous, как реально можно использовать счетчик.
Да и еще:
Теперь шаблоны спец. символов - %[, %], %|. Смысл, я думаю, понятен.
P.S. Просьба не пинать ногами, если кому-то все это покажется слишком мудреным. Просто хочется расширения функциональности и универсальности. Ведь регулярные выражения тоже не очень просты для интуитивного понимания, но очень полезны. |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Mon Jun 05, 2006 18:52 Post subject: |
|
|
Глядя на написанный выше пример, пришла еще более безумная идея. В принципе, ничего в ней страшного нет, но вопрос - далеко ли готов зайти Гислер, если возьмется за изменения этого функционала? И не отпугнем ли мы его слишком большим количеством идей?
Итак... Добавляем новый шаблон:
%^[имя файла] - взять параметры из текстового файла
Для чего это нужно - если посмотреть на последний пример в предыдущем посте, то видно, что он не слишком читабелен и очень длинный. Т.е. потенциально длина маски параметров может превысить лимит длины строки. В этом случае на помощь придет данный новый шаблон. Т.о. в строке параметров пишем:
%L[%^[D:\TotalCmd\Templates\PLS.txt]]
А в файле D:\TotalCmd\Templates\PLS.txt:
Code: | %[playlist%]
|File%C=%P%N
Title%C=%=[anytag.Title]
Length%C=%=[anytag.Length]
|NumberOfEntries=%Q
Version=2
|
Причем если параметры применяются для файла-списка (%L), то шаблоны %B указывать не обязательно - вместо них в файле-шаблоне введен реальный перенос строки. Если же параметры в файле-шаблоне указаны для формирования не файла-списка, а строки, то берется первая строка из файла-шаблона.
На мой взгляд, это очень удобное и элегантное решение. Но, как я уже сказал выше - возникает опасность, что Гислер вообще начнет от всего этого открещиваться. |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6190 Location: Москва
|
(Separately) Posted: Tue Jun 06, 2006 10:30 Post subject: |
|
|
Прочитал, частично вник, но... Лично мне всё это уже кажется совершенно излишним. Во-первых, и в-главных: суть шаблонов в создании временного файла списка, который будет обработан соответствующей программой. Объясни, на кой ляд сдался временный файл в формате PLS? Который сразу удалится, как только закроется вызванная программа. Если мне нужен PLS, я его сгенерю либо той же программой, либо архиваторным плагином. Если мне нужно просто проиграть выделенные файлы, я их либо перетащу в программу, либо открою через контекстное меню.
Во-вторых, я совершенно не понял концепцию с вертикальной чартой. У тебя получается сейчас так, что первый элемент не обрабатывается совсем (всегда один-единственный), второй элемент дублируется для всех файлов (с подстановкой соответствющих шаблонов), и третий - снова фиксированный. А если я сделаю четыре? А если мне нужно, чтобы размножались и первый с третьим? Короче, этот пункт выглядит настолько надуманным, что его включать я бы в список пожеланий не стал.
Ну и в-третьих, всё это выглядит (именно внешне выглядит) настолько сложным и неочевидным, что я бы повременил хотя бы до первой реакции Гислера. Первый блок ещё достаточно простой и понятный, а вот дальнейшие навороты... К тому же уж если в необходимости счётчика возникли сомнения, то что говорить о последних предложенных тобой наворотах. За исключением, быть может, шаблона %=[plugin.field]. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Tue Jun 06, 2006 12:20 Post subject: |
|
|
Я же говорил, что идеи безумные
Мои соображения:
1. Для чего нужны сложные файлы.
1.1. Используя команду copy и соответствующую маску параметров, можно получить встроенный аналог плагина WdxInfoPacker, к тому же, на мой взгляд, с более понятным синтаксисом.
1.2. Другой вариант использования - если необходимо по некой информации из файлов сделать сводную таблицу и открыть ее в Excel. Для этого запускаем Excel, а в качестве параметров указываем соответствующую маску параметров (использующую wdx-плагины), у которой в конце дописываем ".csv". Поскольку файлы csv не в ходу, такому файлу и нужно быть временным, чтобы потом сохранить некий отчет в формате xls.
1.3. Затем еще вариант использования... Правда, к нему надо, чтобы Гислер сделал небольшую доработку - если в маске параметров указаны шаблоны несколькольких файлов-списков, то и формировалось бы несколько временных файлов. Сейчас (по-моему, это ошибка) формируется один временный файл по последнему шаблону файла-списка. Так вот, можно вызывать утилиту сравнения файлов, а в качестве параметров указывать два разных временных файла. При этом такие временные файлы можно формировать по разным принципам как для одного списка выделенных файлов, так и для выделенных файлов в разных панелях.
2. Преложение по поводу вертикальной черты я высказал для того, чтобы можно было указывать некие статистические секции. Чаще всего это - шапка файла и итоговый текст. Какой синтаксис лучше для этого применить? Мое предложение - вертикальная черта.
Но это еще не все. Опять же, обеспечим универсальность применения такого подхода. Т.о., правило - если секция содержит просто текст или статистические шаблоны (например, %Q или %B), то помещается в файл единожды; если секция содержит динамические шаблоны (например, %P или %N), то секция повторяется <n> раз - по количеству выделенных файлов.
Я сам понимаю, что это очень заморочено, но это реальное расширение функциональности любимого файл-менеджера. |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6190 Location: Москва
|
(Separately) Posted: Tue Jun 06, 2006 12:44 Post subject: |
|
|
1.1. Встроенный аналог WdxInfoPacker'а и так будет в семёрке.
1.2. Ну это уже хоть что-то...
1.3. Насчёт доработки - в настоящее время смысла нет, т.к. не поддерживаются шаблоны. Если же шаблоны будут внедрены, то, конечно, да, такое необходимо. Сравнение же списков... Нафига оно? Не могу реального применения придумать (а что могу придумать - там встроенный инструмент синхронизации отлично справляется).
2. Не знаю, не знаю... Как-то очень натянуто всё это звучит. Гислер - мастер отмазываться от предложений, я бы не хотел давать ему лишний повод... _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Tue Jun 06, 2006 13:11 Post subject: |
|
|
ОК
Сначала посмотрим, как Гислер на первые предложения отреагирует.
Хотя, думая, что уже сейчас можно предложить добавить шаблоны %Q (для организации по необходимости цикла с жестко заданным конечным значением) и %= (весьма полезная вещь ).
Насчет 1.3.
Запусти какую-нибудь программу со строкой параметров:
%L %l %F %f %D %d
Будет 6 входных параметров - одно и то же имя временного файла, содержащего список по последнему шаблону - %d. По-моему, это ошибка.
Для проверки входных параметров можно использовать vbs-скрипт:
Code: | Dim Argument
For Each Argument in WScript.Arguments
MsgBox(Argument)
Next
Wscript.Quit |
|
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6190 Location: Москва
|
(Separately) Posted: Tue Jun 06, 2006 14:47 Post subject: |
|
|
Quote: | Насчет 1.3.
Запусти какую-нибудь программу со строкой параметров:
%L %l %F %f %D %d |
Да нет, я-то понял, в чём проблема. Я не понял, нафига нужно запускать программу с такой строкой параметров. Вот если бы была реализована параметризация, предложенная в первом посте, тогда да, имело бы смысл создавать различные списки и обрабатывать их одним махом (да и то сомнительно, чтобы такое было реально нужно). А уж сейчас, когда единственное различие - это с путями или без путей... (DOS-имена в расчёт можно не брать.) _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|