[solved] перехват команд в командной строке фара
[solved] перехват команд в командной строке фара
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
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.
перехват команд в командной строке фара
lvmm,
echo.exe в path?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
перехват команд в командной строке фара
Ага, System.Executor.ComspecCondition=.* Вопрос на 5: покажите документацию, где это описано. Гугл ничего кроме https://bugs.farmanager.com/view.php?id=3223#c14595 не нашел.
перехват команд в командной строке фара
В far:config выберите System.Executor.ExcludeCmds (Smitis, правильно советует) и нажмите Shift+F1.
Last edited by 2useven10 on Tue 09 Nov, 2021 13:41, edited 1 time in total.
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
перехват команд в командной строке фара
2useven10, Вопрос был не про ExcludeCmds, а про ComspecCondition. Меня вот тоже заинтересовал этот параметр, но
Проблема следующая: ExcludeCmds - список команд (не поддерживающий регэкспы!). Т.е. если я хочу, чтобы любая команда выполнялась через ComSpec, то я (а) должен знать все команды процессора (а если это - не cmd.exe, то список может быть очень большим!), либо (б) должен знать список команд, перехватываемых FAR-ом и перечислить из в списке. Вы гарантируете, что в
Shifft+F1
ничего не выдаёт.Проблема следующая: ExcludeCmds - список команд (не поддерживающий регэкспы!). Т.е. если я хочу, чтобы любая команда выполнялась через ComSpec, то я (а) должен знать все команды процессора (а если это - не cmd.exe, то список может быть очень большим!), либо (б) должен знать список команд, перехватываемых FAR-ом и перечислить из в списке. Вы гарантируете, что в
%FarHome%\Addons\SetUp\Executor.COMMAND.farconfig
полный список? Ну и повис вопрос: а нафига? Если чел пишет команду в комстроке, то, очевидно, он рассчитывает получить тот же результат, что и при выполнении этой команды из командного процессора. Лучшее - враг хорошего…перехват команд в командной строке фара
Очевидно потому что этот параметр не описан.
Читать хэлп ExcludeCmds надо чтобы понять общую картину, там, например, есть ссылки на те команды которые фар выполняет сам, полезно знать любителям выполнять любые команды через ComSpec, а потом спрашивать почему после выполнения команды set/cd/... вы не получили ожидаемого эффекта.
Last edited by 2useven10 on Tue 09 Nov, 2021 20:03, edited 2 times in total.
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
перехват команд в командной строке фара
На самом деле совсем недавно (года три как) обнаружил, что cd меняет папку активной панели, и был приятно удивлён. Т.е. для меня ожидаемый эффект - это отсутствие эффекта после возврата в командную среду ФАРа. Но теперь понял, почему так.
перехват команд в командной строке фара
System.Executor.ComspecCondition как раз и позволяет сделать искомое не перечислением, а регэкспом - ну, если я правильно понял эту недокументированную фичу. По крайней мере, для моего конкретного случая указание там .* помогло. Я об это как бы уже написал, только solved в топике не поставил, и закипела дискуссия...buniak_a_h wrote: ↑Tue 09 Nov, 2021 19:33 ExcludeCmds - список команд (не поддерживающий регэкспы!). Т.е. если я хочу, чтобы любая команда выполнялась через ComSpec, то я (а) должен знать все команды процессора
- Smitis
- Posts: 1709
- Joined: Fri 18 Mar, 2005 12:51
- Location: Питер
- Has thanked: 23 times
- Been thanked: 55 times
[solved] перехват команд в командной строке фара
При том, что таких процессоров всего 2 (два) и в обозримом будущем других не предвидится...
Разум когда-нибудь победит.
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
[solved] перехват команд в командной строке фара
Вы имеете в виду PowerShell и Bash? Или Cmd.exe и command.com? Или я какие-то упустил? А, ещё на "точке" у нас был специализированный… Давно было, уже не помню подробностей.
- Smitis
- Posts: 1709
- Joined: Fri 18 Mar, 2005 12:51
- Location: Питер
- Has thanked: 23 times
- Been thanked: 55 times
[solved] перехват команд в командной строке фара
buniak_a_h,
Нет, я имею ввиду cmd и tcc. command.com только в допотопных ОС и можно про него забыть. Остальные НЕ командные процессоры. Шеллы, да. Но не процессоры.
Нет, я имею ввиду cmd и tcc. command.com только в допотопных ОС и можно про него забыть. Остальные НЕ командные процессоры. Шеллы, да. Но не процессоры.
Разум когда-нибудь победит.
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
[solved] перехват команд в командной строке фара
Smitis, в терминологии не силён, извините. Когда я учился, слова "шеллы" не было, а командным процессором назывался любой интерпретатор команд (внутренних или внешних). Самый "продвинутый" в то время был rexx (практически PL/1).
Кстати, не только моя путаница: википедия по запросу "командные процессоры" также выводит список, содержащий то, что я перечислил. Хотя вики - не истина в последней инстанции, но показатель распространённости мнения.
Кстати, не только моя путаница: википедия по запросу "командные процессоры" также выводит список, содержащий то, что я перечислил. Хотя вики - не истина в последней инстанции, но показатель распространённости мнения.
Last edited by buniak_a_h on Wed 10 Nov, 2021 21:02, edited 1 time in total.
- Smitis
- Posts: 1709
- Joined: Fri 18 Mar, 2005 12:51
- Location: Питер
- Has thanked: 23 times
- Been thanked: 55 times
[solved] перехват команд в командной строке фара
buniak_a_h,
Когда я учился интернетов с википедиями ещё не было, а любая компьютерная литература была жутким дефицитом. Но парочка справочников тех времён у меня есть, потом посмотрю.
В русской википедии неразбериха в этом плане какая-то. В английской версии лучше.
А REXX, я считаю, хоть и не тянул на PL/1, но под ДОСом я его использовал (а с PC-DOS он шёл штатно).
Когда я учился интернетов с википедиями ещё не было, а любая компьютерная литература была жутким дефицитом. Но парочка справочников тех времён у меня есть, потом посмотрю.
В русской википедии неразбериха в этом плане какая-то. В английской версии лучше.
А REXX, я считаю, хоть и не тянул на PL/1, но под ДОСом я его использовал (а с PC-DOS он шёл штатно).
Разум когда-нибудь победит.