Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Запуск ConEmu из Powershell (http://forum.oszone.net/showthread.php?t=353060)

Uragan66 15-02-2023 17:57 3003282

Запуск ConEmu из Powershell
 
Всем доброго времени суток!
Заранее извиняюсь, если спрошу глупость...
Бывает возникает необходимость запуска консольной программы из 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 3003312

Вообще у ConEmu есть справка. Давно не пользовался, попробуйте так:

Код:

Start-Process ConEmu64 -Arg '-run cmd /с "ffplay http://31.131.22.243:5945/398/index.m3u8"'
ffplay сам по себе вряд ли может работать, его надо запускать из шелла.

DJ Mogarych 16-02-2023 09:00 3003323

Цитата:

Цитата Uragan66
Бывает возникает необходимость запуска консольной программы из powershell, но в оболочке cmd. »

Цитата:

Цитата Uragan66
ConEmu »

Зачем?

Цитата:

Цитата Foreigner
ffplay сам по себе вряд ли может работать »

ffplay прекрасно работает "сам" из powershell. Это просто консольный плеер.
Код:

& ffplay.exe c:\video.mp4

Uragan66 16-02-2023 09:42 3003327

Цитата:

Цитата DJ Mogarych
Зачем? »

Из powershell запуск нужен при написании небольшого приложения (компилированный скрипт powershell).
А почему ConEmu ? - Нравится этот терминал, например, внешним видом, возможностью вкладок и т.д.
Цитата:

Цитата Foreigner
Вообще у ConEmu есть справка. »

Справку читал сразу... Но ничего не получилось запустить, перепробовав различные аргументы.
Цитата:

Цитата Foreigner
попробуйте так:
Код: Выделить весь код
Start-Process ConEmu64 -Arg '-run cmd /с "ffplay http://31.131.22.243:5945/398/index.m3u8"' »

Foreigner, спасибо большое, но не получилось.
ConEmu открывается, но аргументы из powershell не получает, консольная программа в нём не запускается.
А CmDer (по сути аналог ConEmu) вообще запускаться не хочет, пишет, что параметры неверные.


DJ Mogarych 16-02-2023 09:44 3003328

Uragan66, попробуйте VSCode или Powershell ISE на худой конец.

Foreigner 16-02-2023 10:05 3003329

Цитата:

Цитата DJ Mogarych
ffplay прекрасно работает "сам" из powershell. »

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

Uragan66 16-02-2023 10:14 3003330

Цитата:

Цитата DJ Mogarych
или Powershell ISE на худой конец »

Пробовал, не хочет ни в какую...
Что примечательно, если в ConEmu, через его настройки, создать задачу по запуску нужной утилиты, то тогда запуск из powershell идёт без проблем:
Код:

Start-Process -FilePath "ConEmu" -ArgumentList  '/task ffplay'
Но в этом случае теряется вся суть такого запуска - передача переменной из powershell.

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

Foreigner 16-02-2023 10:14 3003331

Цитата:

Цитата Uragan66
ConEmu открывается, но аргументы из powershell не получает, консольная программа в нём не запускается. »

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

Uragan66 16-02-2023 10:23 3003332

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

Цитата:

Цитата Foreigner
Это нужно разбираться с Conemu, если он получает корректные параметры и их аргументы »

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

YuS_2 16-02-2023 10:57 3003337

Цитата:

Цитата Uragan66
Может кто подскажет, возможно ли провернуть такой трюк ? »

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

Foreigner 16-02-2023 10:57 3003338

А просто вот так не работает?

Код:

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 3003340

Цитата Foreigner:
А просто вот так не работает? »
Foreigner, спасибо, работает!
Минутами раньше я пришел к такому коду
Код:

$link = 'http://31.131.22.243:5945/398/index.m3u8'
Start-Process -FilePath "ConEmu" -ArgumentList "`"ffplay $link`""

Тоже работает. А вот с cmder такой "фокус" не проходит. Ну да это не очень то и нужно.

Цитата:

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

YuS_2, спасибо! Взял на заметку...

DJ Mogarych 16-02-2023 12:03 3003346

Цитата:

Цитата Foreigner
А вы его запустите в "голом" терминале, где нет шелла по умолчанию »

Чем отличаются терминал и шелл? Как можно зайти в "терминал" и что-то запустить, если нет "шелла"?

Foreigner 16-02-2023 12:36 3003348

Цитата:

Цитата DJ Mogarych
Чем отличаются терминал и шелл? Как можно зайти в "терминал" и что-то запустить, если нет "шелла"? »

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


Время: 22:19.

Время: 22:19.
© OSzone.net 2001-