如何使用管道将一个命令的输出重定向到另一个命令的输入?

Aus*_*urk 36 windows pipe command-prompt

我有一个程序将文本发送到LED标志.

prismcom.exe

要使用该程序发送"Hello":

prismcom.exe usb Hello
Run Code Online (Sandbox Code Playgroud)

现在,我希望使用一个名为Temperature的命令程序.

temperature
Run Code Online (Sandbox Code Playgroud)

假设程序给出了计算机的温度.

Your computer is 100 degrees Fahrenheit.
Run Code Online (Sandbox Code Playgroud)

现在,我希望将温度输出写入prismcom.exe:

temperature | prismcom.exe usb
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用.

是的,我已经找了20多分钟的解决方案了.在所有情况下,它们都是kludges/hacks或Windows命令行之外的解决方案.

我很欣赏如何将输出从温度传输到prismcom的方向.

谢谢!

编辑:Prismcom有两个论点.第一个将永远是'usb'.之后发生的任何事情都会显示在标志上.

Ken*_*err 25

试试这个.将其复制到批处理文件(例如send.bat)中,然后运行send.bat以将消息从温度程序发送到prismcom程序.

temperature.exe > msg.txt
set /p msg= < msg.txt
prismcom.exe usb "%msg%"
Run Code Online (Sandbox Code Playgroud)


Ost*_*ati 13

您还可以使用PowerShell在Cmd.exe命令行上运行完全相同的命令.为简单起见,我会采用这种方法......

C:\>PowerShell -Command "temperature | prismcom.exe usb"
Run Code Online (Sandbox Code Playgroud)

请阅读了解Windows PowerShell管道

您也可以C:\>PowerShell在命令行输入,它会立即进入PS C:\>模式,您可以直接开始编写PS.

  • 这会将“温度”的标准输出通过管道传输到“prismcom”的标准输入,不是吗?这不是问题所要问的;`temple` 的输出必须成为 `prismcom` 的命令行参数之一。 (2认同)

Har*_*ton 12

这应该工作:

for /F "tokens=*" %i in ('temperature') do prismcom.exe usb %i
Run Code Online (Sandbox Code Playgroud)

如果在批处理文件中运行,则需要使用%%i而不是仅使用%i(在两个位置).