Как использовать канал для перенаправления вывода одной команды на вход другого?
У меня есть программа, которая отправляет текст на светодиодный знак.
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". Все, что приходит после этого, будет отображаться на знаке.
Ответы
Ответ 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.