View Issue Details

IDProjectCategoryView StatusLast Update
0000876WishesCommand Line/Executepublic2014-08-28 09:06
ReporterJohnDoe Assigned To 
PrioritynormalSeverityfeatureReproducibilityN/A
Status newResolutionopen 
Summary0000876: Особенности исполнения некоторых команд %COMSPEC%, обрабатываемых фаром самостоятельно.
DescriptionДля передачи нескольких команд можно использовать специальные символы (& && || и др.)

Однако некоторые из команд обрабатываются фаром самостоятельно, поэтому для них этот механизм не работает.

Предлагается при обнаружении в командной строке специальных символов не обрабатывать её самостоятельно, а целиком передавать %COMSPEC%

Собственно не предлагается ничего особо нового - ведь именно так фар поступает в случае когда команда употребляется с синтаксисом, отличным от приведенного в разделе помощи "Команды операционной системы"
Steps To ReproduceКонкретно в коммандной строке нет такой уж особой необходимости использовать передачу нескольких команд.

Но это очень удобно там, где мы ограничены одной строкой, т.е. в ассоциациях файлов и в коммандных алиасах.

В большинстве случаев это работает, но только не с командами которые фар (частично) обрабатывает самостоятельно
Additional Information1) Команды "CLS", "REM", "CD" и "CHDIR" FAR обрабатывает самостоятельно.
(К этому списку недавно добавились команды "PUSHD" и "POPD")

2) Команды "IF", "CHCP" и "SET" FAR обрабатывает с ограниченной
функциональностью - если синтаксис отличается от приведенного в разделе
помощи "Команды операционной системы", то команда передается на
дальнейшую обработку ком.процессору.

3) О "передаче нескольких команд" : http://technet2.microsoft.com/WindowsServer/ru/Library/44500063-fdaf-4e4f-8dac-476c497a166f1049.mspx?pf=true
TagsNo tags attached.
Build

Activities

JohnDoe

2009-05-25 14:49

updater   bugnote:0003257

Дополнения:
Применить команду (CtrlG) тоже ограничивается одной строкой.
+Забыл ещё одну "встроенную" команду - "CLRD"

vskirdin

2009-05-25 15:34

administrator   bugnote:0003258

А как быть с префиксами плагинов? cmd в упор не знает что такое "edit:"
Может имеет смысл (эдакая буйная фантазия) в ФАРе (внешний модуль обработчик) "повторить" всю математику cmd?

JohnDoe

2009-05-25 16:17

updater   bugnote:0003259

Смысл конечно есть, и применение нашлось бы. Продолжая буйную фантазию - почему бы не реализовать внутренний "FOR"?

Но пока ничего подобного не реализовано - дешевле всего будет отдавать всё на откуп cmd.

vskirdin

2009-05-25 16:36

administrator   bugnote:0003261

воспользуйся батниками, ибо после отключения внутреннего обработчика команд (хотя бы даже некоей опцией) ты первый запоешь, что ФАР поломался. :-)

vskirdin

2009-05-25 16:47

administrator   bugnote:0003262

и, кстати... CHCP полностью поддерживается

JohnDoe

2009-05-25 17:29

updater   bugnote:0003263

>и, кстати... CHCP полностью поддерживается
Значит обновите techinfo

>после отключения внутреннего обработчика команд (хотя бы даже некоей опцией)
Погодите, не надо ничего отключать.

Возьмём к примеру команду SET. Что фар делает если видит расширеные параметры, которые не может самостоятельно обработать?
Никто ведь не кричит.

Что здесь может вообще "поломаться"?
Изменения, произведённые командами не будут передаваться обратно в фар (путь, кодовая страница, переменная окружения...)
Очевидно, что этого и НЕ ТРЕБУЕТСЯ - они нужны только для той "связки команд", в которой вызваны.

Ведь для чего затевался тикет - для того чтобы "связки" использовать в ассоциациях, алиасах, Apply to...

К примеру в ассоциации на *.reg-файлы у меня стоит связка @reg import "!\!.!" || pause (в случае ошибки - пауза)
Всё прекрасно работает

Но допустим мне понадобилось для другой связки перейти во временную директорию
cd %TEMP% & ....
Что-тут такого хитрого чтобы была необходимость писать батник?

В общем никаких подводных камней тут я не вижу.

Px

2009-05-25 17:29

reporter   bugnote:0003264

Может тогда сделать для "полноценной" обработки командным процессором префикс cmd: или comspec: ? Команды с ним будут передаваться напрямую, минуя обработчики Far-а

vskirdin

2009-05-25 17:52

administrator   bugnote:0003265

Px, для FarCmds? или внутри ФАРа?

JohnDoe

2009-05-25 18:12

updater   bugnote:0003266

Это лишнее. Я и так могу написать %COMSPEC% /c "command1 & command2"

Суть тикета в том чтобы сделать работу коммандной строки более "прозрачной" для пользователя, чтобы не приходилось соображать что фар одни команды умеет стыковать, а другие - нет.

Px

2009-05-25 18:12

reporter   bugnote:0003267

Внутри Far-а

vskirdin

2009-05-25 18:20

administrator   bugnote:0003268

JohnDoe, как ты думаешь, зачем ФАР сам занимается обработкой некоторых (заметь, не всех) команд?
И как ФАР отреагирует, если в твоей команде будет присутствовать pushd (ну или cls), но не будет popd, который ты исполнишь позже?

JohnDoe

2009-05-25 18:28

updater   bugnote:0003269

Last edited: 2009-05-25 18:31

Я знаю для чего он это делается, и помню времена когда этого не делалось.

От фара не ожидается никакой реакции если pushd обработан не фаром, а cmd
pushd/popd естественно должны быть в одном контексте.

Но я ведь точно также не пытаюсь выполнить pushd в одном экземпляре фара, а popd - в другом.

И точно так же используя расширеный синтаксис SET я не ожидаю что переменная вернётся в фар

Zzzz

2009-08-02 10:37

reporter   bugnote:0003837

1.75.2603 - глюк с "echo." при перенаправлении вывода:

"echo.>test_far" пишет в файл "Режим вывода команд на экран (ECHO) включен.".

Еще не работает "echo,".

vskirdin

2009-08-03 16:38

administrator   bugnote:0003841

Хмм... не cmd, а дерьмо полнейшее :-(
echo. == echo, == echo+ == echo\ == echo/ .....
везде пустая строка
зато "echo-"
  "echo-" не является внутренней или внешней
  командой, исполняемой программой или пакетным файлом.
Это что? недокументированные фичи? какие вообще символы допустимы?

JohnDoe

2009-08-03 18:22

updater   bugnote:0003842

Ничего удивительного: минус всегда был легальным символом имени, даже во времена 8.3

vskirdin

2009-08-04 10:05

administrator   bugnote:0003846

> какие вообще символы допустимы?
ы?

JohnDoe

2009-08-04 11:09

updater   bugnote:0003849

Помимо вышеперечисленных ещё =:;[](
(где это документировано не знаю, всё методом тыка)

HaRT

2010-06-04 12:57

reporter   bugnote:0005448

См. также http://bugs.farmanager.com/view.php?id=825

JohnDoe

2012-02-02 14:45

updater   bugnote:0008534

В свете новых изменений (0001953) этот тикет теперь следует отнести вообще ко всем командам запускаемым не с панели а из командной строки.

Issue History

Date Modified Username Field Change
2009-05-25 14:34 JohnDoe New Issue
2009-05-25 14:49 JohnDoe Note Added: 0003257
2009-05-25 15:34 vskirdin Note Added: 0003258
2009-05-25 16:17 JohnDoe Note Added: 0003259
2009-05-25 16:36 vskirdin Note Added: 0003261
2009-05-25 16:47 vskirdin Note Added: 0003262
2009-05-25 17:29 JohnDoe Note Added: 0003263
2009-05-25 17:29 Px Note Added: 0003264
2009-05-25 17:52 vskirdin Note Added: 0003265
2009-05-25 18:12 JohnDoe Note Added: 0003266
2009-05-25 18:12 Px Note Added: 0003267
2009-05-25 18:20 vskirdin Note Added: 0003268
2009-05-25 18:28 JohnDoe Note Added: 0003269
2009-05-25 18:31 JohnDoe Note Edited: 0003269
2009-08-02 10:37 Zzzz Note Added: 0003837
2009-08-03 16:38 vskirdin Note Added: 0003841
2009-08-03 18:22 JohnDoe Note Added: 0003842
2009-08-04 10:05 vskirdin Note Added: 0003846
2009-08-04 11:09 JohnDoe Note Added: 0003849
2010-06-04 12:57 HaRT Note Added: 0005448
2012-02-02 14:45 JohnDoe Note Added: 0008534
2013-02-03 00:31 alexy Severity minor => feature