Я не знаю что там берётся из PATHEXT, но измените в примере файл и маску на x.yz и запуск из командной строки заработает не взирая на то что в PATHEXT нет такого расширения.
Возможно именно это баг.
Хотя лично мне не кажется, что какие-то чисто фаровские маски уместно вообще добавлять в PATHEXT.
Допёр, что PATHEXT только для файлов без расширения.
Last edited by John Doe on Wed 20 Sep, 2017 15:10, edited 1 time in total.
Обдумал ещё раз.
PATHEXT влияет на то, какие расширения будут подставляться, если имя в командной строке без расширения.
И всё, по идее. Если же имя указано полностью, то файл будет искаться в путях безотносительно того, перечислено ли его расширение в PATHEXT.
Но если файл и есть без расширения, т.е. имя указано полностью, и для него существует ассоциация, то вполне логично было бы в этом случае запускать.
Переменная PATHEXT - системная. Пустые расширения в ней (из одной точки) не работают. Нужен свой параметр в настройках для "выполнителя" со списком расширений (или даже масок). По умолчанию значение параметра инициализировать переменной PATHEXT.
Smitis wrote: ↑Wed 20 Sep, 2017 17:48Нужен свой параметр в настройках для "выполнителя" со списком расширений (или даже масок).
Вполне возможно, что не помешает и свой, но мне кажется что выше разговор о другом.
Сейчас исполняемы просто ВСЕ маски из списка ассоциаций на Enter, и как-то ограничивать это смысла я сходу не вижу.
А другой вопрос, какие расширения подставлять, если в командной строке файл без расширения.
John Doe wrote: ↑Wed 20 Sep, 2017 15:40Обдумал ещё раз.
PATHEXT влияет на то, какие расширения будут подставляться, если имя в командной строке без расширения.
И всё, по идее. Если же имя указано полностью, то файл будет искаться в путях безотносительно того, перечислено ли его расширение в PATHEXT.
Но если файл и есть без расширения, т.е. имя указано полностью, и для него существует ассоциация, то вполне логично было бы в этом случае запускать.
Хотя вот мне прислали скрин, подтверждающий, что и файлы без расширения могут запускаються..
Заметил такое отличие между запуском ассоциации на файле и из командной строки.
Задаю ассоциацию (любую, но для примера пусть остаётся маска xyz) с командой echo file:"!.!":
John Doe wrote: ↑Wed 20 Sep, 2017 14:34Для файлов без расширения ассоциации не работают?
У меня описанный пример работает.
Нашёл настройку, которая влияет: System.UseRegisteredTypes:
Использовать стандартные типы файлов
Если это опция включена, то при нажатии Enter на файле, тип которого известен Windows и отсутствует в ассоциациях файлов Far, будет запущена программа Windows, предназначенная для обработки этого типа файлов.
Когда она выключена, то файл без расширения не запускается по ассоциации из командной строки.
У меня была проблемка с моим Cygwin и Bash в кач-ве ComSpec:
Пишу, допустим, "python script.py", запускаю, Фар пытается выполнить команду напрямую, без ComSpec-а, при этом он находит Cygwin-ский symlink: python => python2.7.exe, но не знает, что с ним делать, вылезает сообщение об ошибке. Можно было все проблемные команды добавлять в System.Executor.ExcludeCmds, либо, как делал я, "python=python2.7.exe" в doskey.ini (который загружается при старте Фара). Но это надо было делать в каждом случае, когда возникает очередная такая проблема.
Теперь же я решил это так. Создал файловую ассоциацию:
File mask: *.
Description: Files without extension
Execute command: \!
Теперь "python script.py" превращается в "\python script.py", Far-у этот \ не нравится, и он отправляет команду ComSpec-у (bashcmd), для которого \ в данном случае ничего не меняет, и команда работает.
Это хорошо, что помогло)
Но хочу подчеркнуть, в данном топике мы боремся за то, чтобы с помощью ассоциаций сделать так, чтобы "script.py" запускался без предшествующего ему "python":