Войти

Показать полную графическую версию : Запуск ConEmu из Powershell


Uragan66
15-02-2023, 17:57
Всем доброго времени суток!
Заранее извиняюсь, если спрошу глупость...
Бывает возникает необходимость запуска консольной программы из powershell, но в оболочке cmd. Сделать это довольно просто, к примеру:
Start-Process -FilePath "cmd" -ArgumentList '/c', 'ffplay http://31.131.22.243:5945/398/index.m3u8'
Попробовал так же запускать консольные программы в терминале ConEmu. Но не получилось. Аргументы из powershell не передаются в ConEmu. Или они неправильные.
Может кто подскажет, возможно ли провернуть такой трюк ?

Foreigner
16-02-2023, 00:51
Вообще у ConEmu есть справка (https://conemu.github.io/en/ConEmuArgs.html). Давно не пользовался, попробуйте так:


Start-Process ConEmu64 -Arg '-run cmd /с "ffplay http://31.131.22.243:5945/398/index.m3u8"'


ffplay сам по себе вряд ли может работать, его надо запускать из шелла.

DJ Mogarych
16-02-2023, 09:00
Бывает возникает необходимость запуска консольной программы из powershell, но в оболочке cmd. »
ConEmu »
Зачем?

ffplay сам по себе вряд ли может работать »
ffplay прекрасно работает "сам" из powershell. Это просто консольный плеер.

& ffplay.exe c:\video.mp4

Uragan66
16-02-2023, 09:42
Зачем? »
Из powershell запуск нужен при написании небольшого приложения (компилированный скрипт powershell).
А почему ConEmu ? - Нравится этот терминал, например, внешним видом, возможностью вкладок и т.д.
Вообще у ConEmu есть справка. »
Справку читал сразу... Но ничего не получилось запустить, перепробовав различные аргументы.
попробуйте так:
Код: Выделить весь код
Start-Process ConEmu64 -Arg '-run cmd /с "ffplay http://31.131.22.243:5945/398/index.m3u8"' »
Foreigner, спасибо большое, но не получилось.
ConEmu открывается, но аргументы из powershell не получает, консольная программа в нём не запускается.
А CmDer (по сути аналог ConEmu) вообще запускаться не хочет, пишет, что параметры неверные.

https://images.vfl.ru/ii/1676529629/b0b4cefe/38743882.jpg

DJ Mogarych
16-02-2023, 09:44
Uragan66, попробуйте VSCode или Powershell ISE на худой конец.

Foreigner
16-02-2023, 10:05
ffplay прекрасно работает "сам" из powershell. »

Что значит "сам"? Вы его запускаете из powershell. А вы его запустите в "голом" терминале, где нет шелла по умолчанию, где при его открытии без аргументов получаем пустое окно с ошибкой, а-ля "ошибка: 0123456789, я не знаю что запускать, нажми любую клавишу для закрытия приложения"

Uragan66
16-02-2023, 10:14
или Powershell ISE на худой конец »
Пробовал, не хочет ни в какую...
Что примечательно, если в ConEmu, через его настройки, создать задачу по запуску нужной утилиты, то тогда запуск из powershell идёт без проблем:
Start-Process -FilePath "ConEmu" -ArgumentList '/task ffplay'

Но в этом случае теряется вся суть такого запуска - передача переменной из powershell.

ffplay я взял просто для примера. Интересует запуск любой консольной программы с открытием в окне ConEmu.

Foreigner
16-02-2023, 10:14
ConEmu открывается, но аргументы из powershell не получает, консольная программа в нём не запускается. »

Это нужно разбираться с Conemu, если он получает корректные параметры и их аргументы, то он запустится без ошибок. Я им давно не пользуюсь, с выхода первых версий Windows Terminal, поэтому не помню синтаксис.

Uragan66
16-02-2023, 10:23
P.S. Касательно ffplay - запуск его (отправка ссылки на сервер, получение ответа с параметрами потока) происходит в шелле, а само видео открывается в отдельном окне ffplay.

Это нужно разбираться с Conemu, если он получает корректные параметры и их аргументы »
Пробовал разобраться, увы, ничего не получилось... Пересмотрел кучу мануалов, везде уделяется внимание настройкам Conemu, но нигде не нашел примеров запуска консольной утилиты извне...

YuS_2
16-02-2023, 10:57
Может кто подскажет, возможно ли провернуть такой трюк ? »
Для того, чтобы повершелловский синтаксический парсер не "ломал" некоторые параметры, существует спецмаркер:
--% (https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_special_characters?view=powershell-7.3#stop-parsing-token---)
Используйте его...

Foreigner
16-02-2023, 10:57
А просто вот так не работает?

Start-Process conemu -Arg "-run ffplay http://......"

Я попробовал в conhost.exe и в wt.exe, работает так, :


Start-Process conhost -Arg "cmd /c ffplay --help | more"
Start-Process wt -Arg "cmd /c ffplay --help | more"


Что интересно, без "cmd /c" вывод справки закольцовывается, пока принудительно ее не остановишь Ctrl-C.

Uragan66
16-02-2023, 11:05
Цитата Foreigner:
А просто вот так не работает? »
Foreigner, спасибо, работает!
Минутами раньше я пришел к такому коду
$link = 'http://31.131.22.243:5945/398/index.m3u8'
Start-Process -FilePath "ConEmu" -ArgumentList "`"ffplay $link`""Тоже работает. А вот с cmder такой "фокус" не проходит. Ну да это не очень то и нужно.

Для того, чтобы повершелловский синтаксический парсер не "ломал" некоторые параметры, существует спецмаркер:
--% »
YuS_2, спасибо! Взял на заметку...

DJ Mogarych
16-02-2023, 12:03
А вы его запустите в "голом" терминале, где нет шелла по умолчанию »
Чем отличаются терминал и шелл? Как можно зайти в "терминал" и что-то запустить, если нет "шелла"?

Foreigner
16-02-2023, 12:36
Чем отличаются терминал и шелл? Как можно зайти в "терминал" и что-то запустить, если нет "шелла"? »

Различия понятны. Шелл, это командная оболочка, а терминал, это программа-интерфейс (CLI) для запуска в нем командной оболочки. В некоторых терминалах необходимо самому в настройках определить, что конкретно будет использоваться или он будет читать переменные окружения и запускать то, что соответствует $env:Comspec в винде, $env:SHELL в юниксах. Но может случиться так, что терминал примет приложение за командный интепретатор и запустит его напрямую, соответственно приложение может быть неспособно к такому режиму.




© OSzone.net 2001-2012