[solved] перехват команд в командной строке фара

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
Post Reply
lvmm
Posts: 119
Joined: Thu 15 Apr, 2021 14:31
Has thanked: 8 times
Been thanked: 3 times

[solved] перехват команд в командной строке фара

Post by lvmm »

C:\temp>echo %windir% %time%
C:\WINDOWS %time%

C:\temp>cmd /c echo %windir% %time%
C:\WINDOWS 10:23:25.16

Я так понимаю, фар пытается изобразить echo сам, но получается плохо? Как сделать, чтобы все команды всегда выполнялись через comspec? Еще очень интересна логика, стоящая за этим решением. Если кто-то решил, что так будет быстрее, то таки нет, на порядок медленнее, и это не метафора: первая команда - 0.46с, вторая - 0.037
Last edited by lvmm on Wed 10 Nov, 2021 08:10, edited 1 time in total.
2useven10
Posts: 5211
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

перехват команд в командной строке фара

Post by 2useven10 »

lvmm,
Far Manager, version 3.0.5910.0 x64 Copyright © 1996-2000 Eugene Roshal, Copyright © 2000-2021 Far Group C:\>echo %windir% %time% C:\WINDOWS 10:47:56,02
echo.exe в path?
lvmm
Posts: 119
Joined: Thu 15 Apr, 2021 14:31
Has thanked: 8 times
Been thanked: 3 times

перехват команд в командной строке фара

Post by lvmm »

Точно. Осел. Но это не снимает вопроса: как сделать, чтобы фар запускал все через comspec, а не пытался найти программу сам?
lvmm
Posts: 119
Joined: Thu 15 Apr, 2021 14:31
Has thanked: 8 times
Been thanked: 3 times

перехват команд в командной строке фара

Post by lvmm »

Ага, System.Executor.ComspecCondition=.* Вопрос на 5: покажите документацию, где это описано. Гугл ничего кроме https://bugs.farmanager.com/view.php?id=3223#c14595 не нашел.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

перехват команд в командной строке фара

Post by Smitis »

lvmm wrote: Tue 09 Nov, 2021 09:00 чтобы фар запускал все через comspec, а не пытался найти программу сам?
far:config System.Executor.ExcludeCmds
Не оно?
Last edited by Smitis on Tue 09 Nov, 2021 10:19, edited 1 time in total.
Разум когда-нибудь победит.
2useven10
Posts: 5211
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

перехват команд в командной строке фара

Post by 2useven10 »

lvmm wrote: Tue 09 Nov, 2021 10:15 покажите документацию, где это описано.
В far:config выберите System.Executor.ExcludeCmds (Smitis, правильно советует) и нажмите Shift+F1.
Last edited by 2useven10 on Tue 09 Nov, 2021 13:41, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

перехват команд в командной строке фара

Post by buniak_a_h »

2useven10, Вопрос был не про ExcludeCmds, а про ComspecCondition. Меня вот тоже заинтересовал этот параметр, но Shifft+F1 ничего не выдаёт.
Проблема следующая: ExcludeCmds - список команд (не поддерживающий регэкспы!). Т.е. если я хочу, чтобы любая команда выполнялась через ComSpec, то я (а) должен знать все команды процессора (а если это - не cmd.exe, то список может быть очень большим!), либо (б) должен знать список команд, перехватываемых FAR-ом и перечислить из в списке. Вы гарантируете, что в %FarHome%\Addons\SetUp\Executor.COMMAND.farconfig полный список? Ну и повис вопрос: а нафига? Если чел пишет команду в комстроке, то, очевидно, он рассчитывает получить тот же результат, что и при выполнении этой команды из командного процессора. Лучшее - враг хорошего…
2useven10
Posts: 5211
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

перехват команд в командной строке фара

Post by 2useven10 »

buniak_a_h wrote: Tue 09 Nov, 2021 19:33ничего не выдаёт.
Очевидно потому что этот параметр не описан.
Читать хэлп ExcludeCmds надо чтобы понять общую картину, там, например, есть ссылки на те команды которые фар выполняет сам, полезно знать любителям выполнять любые команды через ComSpec, а потом спрашивать почему после выполнения команды set/cd/... вы не получили ожидаемого эффекта.
Last edited by 2useven10 on Tue 09 Nov, 2021 20:03, edited 2 times in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

перехват команд в командной строке фара

Post by buniak_a_h »

2useven10 wrote: Tue 09 Nov, 2021 19:51 почему после выролнения команды set/cd/... вы не получили ожидаемого эффекта
На самом деле совсем недавно (года три как) обнаружил, что cd меняет папку активной панели, и был приятно удивлён. Т.е. для меня ожидаемый эффект - это отсутствие эффекта после возврата в командную среду ФАРа. Но теперь понял, почему так. :-)
lvmm
Posts: 119
Joined: Thu 15 Apr, 2021 14:31
Has thanked: 8 times
Been thanked: 3 times

перехват команд в командной строке фара

Post by lvmm »

buniak_a_h wrote: Tue 09 Nov, 2021 19:33 ExcludeCmds - список команд (не поддерживающий регэкспы!). Т.е. если я хочу, чтобы любая команда выполнялась через ComSpec, то я (а) должен знать все команды процессора
System.Executor.ComspecCondition как раз и позволяет сделать искомое не перечислением, а регэкспом - ну, если я правильно понял эту недокументированную фичу. По крайней мере, для моего конкретного случая указание там .* помогло. Я об это как бы уже написал, только solved в топике не поставил, и закипела дискуссия...
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

[solved] перехват команд в командной строке фара

Post by Smitis »

buniak_a_h wrote: Tue 09 Nov, 2021 19:33 должен знать все команды процессора
При том, что таких процессоров всего 2 (два) и в обозримом будущем других не предвидится...
Разум когда-нибудь победит.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

[solved] перехват команд в командной строке фара

Post by buniak_a_h »

Smitis wrote: Wed 10 Nov, 2021 20:08 таких процессоров всего 2 (два)
Вы имеете в виду PowerShell и Bash? Или Cmd.exe и command.com? Или я какие-то упустил? А, ещё на "точке" у нас был специализированный… Давно было, уже не помню подробностей.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

[solved] перехват команд в командной строке фара

Post by Smitis »

buniak_a_h,
Нет, я имею ввиду cmd и tcc. command.com только в допотопных ОС и можно про него забыть. Остальные НЕ командные процессоры. Шеллы, да. Но не процессоры.
Разум когда-нибудь победит.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

[solved] перехват команд в командной строке фара

Post by buniak_a_h »

Smitis, в терминологии не силён, извините. Когда я учился, слова "шеллы" не было, а командным процессором назывался любой интерпретатор команд (внутренних или внешних). Самый "продвинутый" в то время был rexx (практически PL/1).
Кстати, не только моя путаница: википедия по запросу "командные процессоры" также выводит список, содержащий то, что я перечислил. Хотя вики - не истина в последней инстанции, но показатель распространённости мнения.
Last edited by buniak_a_h on Wed 10 Nov, 2021 21:02, edited 1 time in total.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

[solved] перехват команд в командной строке фара

Post by Smitis »

buniak_a_h,
Когда я учился интернетов с википедиями ещё не было, а любая компьютерная литература была жутким дефицитом. Но парочка справочников тех времён у меня есть, потом посмотрю.
В русской википедии неразбериха в этом плане какая-то. В английской версии лучше.
А REXX, я считаю, хоть и не тянул на PL/1, но под ДОСом я его использовал (а с PC-DOS он шёл штатно).
Разум когда-нибудь победит.
Post Reply

Return to “Нужна помощь”