Ассоциации для файлов при запуске из командной строки

Хотите говорить о Far и не знаете, куда обратиться?
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Ассоциации для файлов при запуске из командной строки

Post by Smitis »

gene.pavlovsky
Для всех этих манипуляций ФАРу явно не хватает собственных ассоциаций, на подобие уже существующих, но для командной строки. Поясню - сейчас, можно задать ассоциацию, скажем *.sh и запускать такие файлы через bash по Enter. Но для командной строки такого нет. А если бы можно было задать расширения и ассоциированные с ними приложения, подставлять и искать файлы с этими расширениями (т.е. всё как сейчас, только не на уровне ОС, а на уровне ФАРа), то никаких бы замен COMSPEC не нужно было. Расширение sh ассоциируем с bash, ему передаётся командная строка as is и всё работает.
Last edited by Smitis on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Добавлена ссылка на исходную тему
Разум когда-нибудь победит.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Подружить Far и bash (Cygwin и другие)

Post by DrKnS »

Smitis wrote: ФАРу явно не хватает собственных ассоциаций, на подобие уже существующих, но для командной строки.
В принципе, существующим ассоциациям можно разрешить работать в комстроке и предусмотреть передачу аргументов по %1 %2 %3 ... %* или ещё как.
gene.pavlovsky
Posts: 170
Joined: Tue 16 Feb, 2010 17:55
Location: Luxembourg
Has thanked: 11 times
Been thanked: 9 times
Contact:

Подружить Far и bash (Cygwin и другие)

Post by gene.pavlovsky »

Smitis wrote:gene.pavlovsky
... то никаких бы замен COMSPEC не нужно было. Расширение sh ассоциируем с bash, ему передаётся командная строка as is и всё работает.
Да я в командной строке много всего делаю, где ничего с расширением sh нету. Ну вот например как калькулятор echo $((2**20)), или надо с группой файлов что-то сделать: for file in *mp3; do lame --decode "$file"; done
Так что я ратую за FAR_ComSpec
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Подружить Far и bash (Cygwin и другие)

Post by Smitis »

DrKnS wrote:В принципе, существующим ассоциациям можно разрешить работать в комстроке и предусмотреть передачу аргументов по %1 %2 %3 ... %* или ещё как.
Но ФАРовские ассоциации это не просто соответствие расширение-программа. Там могут быть довольно хитрые маски. Что делать с ассоциациями типа readme.*;*.doc?;*.txt?
Если команда введена полность, с расширением, тогда можно поискать соответствие. А если соответствий несколько? А если команда введена без расширения?

П.С.
Как, например, это сделано в TakeCommand. При старте выполняется tcstart.btm, лежащий рядом с tcc.exe. В нём в переменную PATHEXT добавляю нужные расширения и создаю переменные среды вида set .lua=`%farhome%\lflua.exe` %*. И всё. Tcc будет искать по обычному алгоритму (текущая папка, PATH, etc) файлы подставляя расширения из PATHEXT и выполняя нужную ассоциацию, независимо от того, что там ассоциировано в Винде. Если нет нужной переменной среды, тогда как обычно - из реестра.
Разум когда-нибудь победит.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Подружить Far и bash (Cygwin и другие)

Post by Smitis »

Хотя с другой стороны...
Допустим, что-то там ввели в командной строке. Ищем исполняемый файл обычным образом. Нашли. Ищем ФАРовскую ассоциацию имеющую Execute command (ну, т.е., как при Enter). Если нашли несколько - выводим меню. Берём выбранную в меню ассоциацию или единственную, подставляем, выполняем. Если ассоциаций нет - действуем по-старому. Это может работать!
Неуверен только, что лучше делать с частью командной строки, после команды. Возможно, можно просто дописывать через пробел as is к полученной после подстановки метасимволов.

gene.pavlovsky Получается, это предложение не относится к Вашему предложению по FAR_ComSpec. Будем считать это другим предложением. :)
Разум когда-нибудь победит.
gene.pavlovsky
Posts: 170
Joined: Tue 16 Feb, 2010 17:55
Location: Luxembourg
Has thanked: 11 times
Been thanked: 9 times
Contact:

Подружить Far и bash (Cygwin и другие)

Post by gene.pavlovsky »

А что это всё даёт, чего нельзя добиться стандартными ассоциациями винды?

Code: Select all

assoc .php=phpfile
ftype phpfile="C:\usr\local\wnmp\php\php.exe" -f "%1" -- %~2
И можно запускать script.php arg1 arg2 ... с командной строки.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Подружить Far и bash (Cygwin и другие)

Post by Smitis »

gene.pavlovsky wrote:А что это всё даёт, чего нельзя добиться стандартными ассоциациями винды?
То же, что и ассоциации ФАРа - независимость от Винды и мобильность. Например, у меня есть мобильная версия ФАРа, включающая в себя ФАР, ConEmu и некоторый "джентльменский набор" консольных (и не только) утилит, которую я, во-первых, синхронизирую на несколько компьютеров, во-вторых, она есть на флешке, всегда можно воткнутся в другой компьютер и работать. А на другом компьютере может и не быть нужных системных ассоциаций или быть "ассоциированны" не с тем, с чем нужно. Даже vbs/js могут быть ассоциированы по разному (через cscript или wscript). А так можно работать ничего не меняя в системе.
Например, есть некий завод (не буду рекламировать), у них есть сервер. На сервере крутятся некоторые их программы и есть софт для нашей системы (софт для ПЛК, скада, система управления печатью этикеток и т.д.). Если у них что-то произошло, мы договариваемся и я захожу через удаленный рабочий стол и смотрю, что эти кадры сломали. Типа, поддержка. На сервере у меня, естественно, есть ФАР. Так вот, чем меньше я буду вносить изменения в их систему, тем лучше.
Разум когда-нибудь победит.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Ассоциации для файлов при запуске из командной строки

Post by Smitis »

drkns 24.06.2016 01:15:01 +0200 - build 4723

1. Очень экспериментальная фича: встроенные ассоциации распространяются на комстроку.
Отлично! Требует тестирования, но на первый взгляд, работает.
Вопрос: расширения исполняемых файлов, как правильно понял, берутся из PATHEXT?
Разум когда-нибудь победит.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Ассоциации для файлов при запуске из командной строки

Post by DrKnS »

Да.
gene.pavlovsky
Posts: 170
Joined: Tue 16 Feb, 2010 17:55
Location: Luxembourg
Has thanked: 11 times
Been thanked: 9 times
Contact:

Ассоциации для файлов при запуске из командной строки

Post by gene.pavlovsky »

У меня, наоброт, обновление до 4725 - вылезли проблемы, очевидно из-за этой фичи.
В ассоциациях файлов для *.xml у меня стоит Execute: @"!.!"
Для того, чтобы xml файлы открывались ассоц. приложением (у меня - notepad2), а не в виде дерева в фаре.
Теперь же при нажатии на ввод на xml файл мой ComSpec (bashcmd-wrapper) рапортует, что @path/to/file.xml - неизвестная ему команда.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Ассоциации для файлов при запуске из командной строки

Post by HaRT »

gene.pavlovsky wrote:В ассоциациях файлов для *.xml у меня стоит Execute: @"!.!"
Для того, чтобы xml файлы открывались ассоц. приложением (у меня - notepad2), а не в виде дерева в фаре.
Так пропишите @cmd.exe /c start "" "!\!.!" — и будет так, как Вам надо.
Фар есть инструмент, а не нянька. © 2009 DrKnS
gene.pavlovsky
Posts: 170
Joined: Tue 16 Feb, 2010 17:55
Location: Luxembourg
Has thanked: 11 times
Been thanked: 9 times
Contact:

Ассоциации для файлов при запуске из командной строки

Post by gene.pavlovsky »

Было всё нормально, работало. Имхо такая экспериментальная фича должна быть опцией, также как сейчас опция - Use windows registered types.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Ассоциации для файлов при запуске из командной строки

Post by HaRT »

gene.pavlovsky, а точно дело именно в этой фиче, а не в других недавних изменениях запускатора?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Ассоциации для файлов при запуске из командной строки

Post by Smitis »

gene.pavlovsky
А что делает execute: ? (я имею ввиду код)
Разум когда-нибудь победит.
gene.pavlovsky
Posts: 170
Joined: Tue 16 Feb, 2010 17:55
Location: Luxembourg
Has thanked: 11 times
Been thanked: 9 times
Contact:

Ассоциации для файлов при запуске из командной строки

Post by gene.pavlovsky »

HaRT wrote: а точно дело именно в этой фиче, а не в других недавних изменениях запускатора?
Не уверен, но в билде 4720 этой проблемы нету, а в 4725 - есть.
Smitis wrote: А что делает execute: ? (я имею ввиду код)
Под Execute (command) имеется в виду настройка ассоциации, отвечающая за поведение при Enter на файле. Само содержимое это только @"!.!"
Post Reply

Return to “Обсуждение Far Manager”