Работа с консольными алиасами

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 11076
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Работа с консольными алиасами

Post by John Doe » Sat 08 Mar, 2014 23:52

Основная тема об алиасах не содержит общей информации, поэтому размещу здесь это предисловие:

Использование:
  • Алиасы загружаются при старте фара, и перезагружаются при каждом редактировании файла алиасов (после закрытия редактора).
  • Файл с алиасами (по умолчанию alias.doskey) следует разместить в той же папке, где расположен и сам скрипт alias_doskey.lua.
  • Кодировка файла: 866 │ OEM
  • Формат файла: типичный ini-файл, разбитый на секции вида [far.exe], [cmd.exe].
    (Алиасы секции [far.exe] имеют приоритет. Если нужно изменить их с помощью DOSKEY.EXE, то в командную строку необходимо добавить /EXENAME=far.exe)
  • Об имени файла:
  • В качестве комментариев можно использовать строки, начинающиеся на ;=
Из командной строки:
  • a [alias] — открыть список алиасов в редакторе и [опционально] установить курсор на "alias".
  • rr — перезагрузить алиасы.
Требуется FAR 3 build >=3854

Attachments
Alias.7z
(2.02 KiB) Downloaded 136 times

User avatar
John Doe
Бюрократ
Posts: 11076
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Работа с консольными алиасами

Post by John Doe » Sat 08 Mar, 2014 23:59

Запланированы (и практическии реализованы) некоторые дополнительные функции.
Но для начала вот скрипт в первом приближении:
(Требуется FAR 3 build >=3821)

GorDAn
Posts: 49
Joined: Sun 26 Jun, 2011 09:47
Has thanked: 6 times

Re: Работа с консольными алиасами

Post by GorDAn » Wed 14 May, 2014 11:02

Спасибо за классный скрипт! Столкнулся со следующей проблемой, иногда при запуске FAR появлялось сообщение «Исключительная ситуация» в заголовке вкладки ConEmu. И вылетал плагин «ConEmu Background». Чем больше была пауза в скрипте тем реже возникала эта ситуация.
Заменил ShellExecuteEx(...) на os.execute(...) ошибка пропала. Макросы DOSKEY работают. Какие преимущества ShellExecuteEx над os.execute?

User avatar
John Doe
Бюрократ
Posts: 11076
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Работа с консольными алиасами

Post by John Doe » Wed 14 May, 2014 11:59

Для os.execute надо ещё предварительно конвертировать путь из UTF-8 в ANSI.
И если в пути присутствует что-то, не имеющее соответствия в ANSI, то будет ошибка.

GorDAn
Posts: 49
Joined: Sun 26 Jun, 2011 09:47
Has thanked: 6 times

Re: Работа с консольными алиасами

Post by GorDAn » Wed 14 May, 2014 14:32

Это касается названий на кириллице?

GorDAn
Posts: 49
Joined: Sun 26 Jun, 2011 09:47
Has thanked: 6 times

Re: Работа с консольными алиасами

Post by GorDAn » Wed 14 May, 2014 14:34

Ещё вопрос, для чего нужен таймаут в скрипте?

User avatar
John Doe
Бюрократ
Posts: 11076
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Работа с консольными алиасами

Post by John Doe » Wed 14 May, 2014 14:38

Таймаут для того чтобы можно было разобрать сообщение. Для красоты.
GorDAn wrote:Это касается названий на кириллице?
С кириллицей проблем не будет, если в вашей системе Ansi это 1251

GorDAn
Posts: 49
Joined: Sun 26 Jun, 2011 09:47
Has thanked: 6 times

Re: Работа с консольными алиасами

Post by GorDAn » Wed 14 May, 2014 14:50

Спасибо. А есть, какие ни будь предположения по поводу ошибки?

User avatar
John Doe
Бюрократ
Posts: 11076
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Работа с консольными алиасами

Post by John Doe » Wed 14 May, 2014 14:54

Вероятно с плагином не всё хорошо.
Для интереса скачал свежий Conemu, но не смог воспроизвести проблему (может конечно от настроек зависит).

GorDAn
Posts: 49
Joined: Sun 26 Jun, 2011 09:47
Has thanked: 6 times

Re: Работа с консольными алиасами

Post by GorDAn » Wed 14 May, 2014 15:02

В том и беда, что не всегда выскакивает. У меня тоже последний FAR и ConEmu. Повесил запуск FAR на макрос и запускаю подряд. На пятом шестом проявляется. Сейчас попробую на чистом профиле.
Ещё помучаю :) Можно ли выводить сообщения скрипта в консоль?

GorDAn
Posts: 49
Joined: Sun 26 Jun, 2011 09:47
Has thanked: 6 times

Re: Работа с консольными алиасами

Post by GorDAn » Wed 14 May, 2014 15:19

Ошибка воспроизводится только когда включён плагин ConEmu Background.

Code: Select all


   ╔═══════════ ConEmu Background ════════════╗
   ║                                          ║
   ║ [x] Плагин включен                       ║
   ║                                          ║
   ║ Путь к файлу настроек (Background.xml)   ║
   ║ Background.xml                           ║
   ║ [ ] Следить за изменениями xml-файла     ║
   ╟──────────────────────────────────────────╢
   ║            { OK } [ Отмена ]             ║
   ╚══════════════════════════════════════════╝


User avatar
John Doe
Бюрократ
Posts: 11076
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Работа с консольными алиасами

Post by John Doe » Thu 15 May, 2014 07:27

(На моей старой машине) видно невооружённым взлядом, что при использованиии os.execute фон мигает несколько раз, а при использовании ShellExecuteEx только раз.
Необязательно даже смотреть исходники, очевидно что os.execute вместо вызова ShellExecuteEx выполняет какие-то действия (вызов C-функции "system", msvcrt.dll).

Мне так и не удалось воспроизвести ошибку. Рекомендую обратится на багтрекер Conemu, а скрипт попробуйте упростить до минимального (например оставьте только вызовы ShellExecuteEx).

GorDAn
Posts: 49
Joined: Sun 26 Jun, 2011 09:47
Has thanked: 6 times

Re: Работа с консольными алиасами

Post by GorDAn » Thu 15 May, 2014 11:58

John Doe wrote:... Рекомендую обратится на багтрекер Conemu ...
Пока ошибку точно не определю, смысла нет обращаться. Возможно это из за Windows, у меня 8.1 x64.

User avatar
John Doe
Бюрократ
Posts: 11076
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Работа с консольными алиасами

Post by John Doe » Thu 15 May, 2014 12:09

Как по мне, то os.execute вполне приемлемый вариант.
Или можно ShellExecuteEx заменить на CreateProcessW, но уж больно громоздко выходит.

P.S.
Честно говоря, сперва я реализовал всё самым что ни на есть "правильным" образом, используя AddConsoleAliasW (и прочие связанные функции этого семейства).
Затем всё выкинул, т.к. тупой вызов doskey позволил сократить код ровно в 3 раза.

GorDAn
Posts: 49
Joined: Sun 26 Jun, 2011 09:47
Has thanked: 6 times

Re: Работа с консольными алиасами

Post by GorDAn » Thu 15 May, 2014 15:33

Хотел сообщение вывести не в окно, а в консоль. Чтобы после загрузки было примерно так...

Code: Select all

Far Manager, version 3.0 (build 3901) x64
Copyright © 1996-2000 Eugene Roshal, Copyright © 2000-2014 Far Group
Console aliases loading... Ok
Это можно скриптом сделать?

User avatar
John Doe
Бюрократ
Posts: 11076
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Работа с консольными алиасами

Post by John Doe » Thu 15 May, 2014 16:02

Теоретически да, но не так просто. А что это даст вам?

Post Reply

Return to “Полезные макросы и скрипты”

Who is online

Users browsing this forum: No registered users and 2 guests