Как использовать канал для перенаправления вывода одной команды на вход другого? - программирование
Подтвердить что ты не робот

Как использовать канал для перенаправления вывода одной команды на вход другого?

У меня есть программа, которая отправляет текст на светодиодный знак.

prismcom.exe

Чтобы использовать программу для отправки "Hello":

prismcom.exe usb Hello

Теперь я хочу, например, использовать командную программу под названием "Температура".

temperature

Скажем, программа дает вашу компьютерную температуру.

Your computer is 100 degrees Fahrenheit.

Теперь я хочу записать вывод температуры в prismcom.exe:

temperature | prismcom.exe usb

Это не работает.

Да, я искал решение для этого более двадцати минут. Во всех случаях это либо kludges/hacks, либо решение для чего-то помимо командной строки Windows.

Я был бы признателен за то, как я буду передавать результат от температуры до призмы.

Спасибо!

Изменить: у Prismcom два аргумента. Первым всегда будет "usb". Все, что приходит после этого, будет отображаться на знаке.

4b9b3361

Ответ 1

Попробуйте это. Скопируйте это в пакетный файл, например send.bat, а затем просто запустите send.bat, чтобы отправить сообщение из программы температуры в программу prismcom.

temperature.exe > msg.txt
set /p msg= < msg.txt
prismcom.exe usb "%msg%"

Ответ 2

Это должно работать:

for /F "tokens=*" %i in ('temperature') do prismcom.exe usb %i

Если вы работаете в пакетном файле, вам нужно использовать %%i вместо %i (в обоих местах).

Ответ 3

Вы также можете запустить точно такую ​​же команду в командной строке Cmd.exe с помощью PowerShell. Я бы пошел с этим подходом для простоты...

C:\>PowerShell -Command "temperature | prismcom.exe usb"

Пожалуйста, прочитайте Понимание трубопровода Windows PowerShell

Вы также можете ввести C:\>PowerShell в командной строке, и он поместит вас в PS C:\> режим instanctly, где вы можете сразу начать писать PS.