Показать полную графическую версию : Запуск 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, но нигде не нашел примеров запуска консольной утилиты извне...
Может кто подскажет, возможно ли провернуть такой трюк ? »
Для того, чтобы повершелловский синтаксический парсер не "ломал" некоторые параметры, существует спецмаркер:
--% (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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.