Reputation: 960
I have a program which sends text to an LED sign.
prismcom.exe
To use the program to send "Hello":
prismcom.exe usb Hello
Now, I wish to, for example use a command program called Temperature.
temperature
Let's say the program gives your computer's temperature.
Your computer is 100 degrees Fahrenheit.
Now, I wish to write the output of temperature to prismcom.exe:
temperature | prismcom.exe usb
This does not seem to work.
Yes, I've looked for a solution to this for more than twenty minutes. In all cases, they are either kludges/hacks or a solution for something besides the Windows command line.
I would appreciate direction as to how I would pipe the output from temperature to prismcom.
Thanks!
Edit: Prismcom has two arguments. The first will always be 'usb'. Anything that comes after that will be displayed on the sign.
Upvotes: 56
Views: 198234
Reputation: 4741
You can also run exactly same command at Cmd.exe command-line using PowerShell. I'd go with this approach for simplicity...
C:\>PowerShell -Command "temperature | prismcom.exe usb"
Please read up on Understanding the Windows PowerShell Pipeline
You can also type in C:\>PowerShell
at the command-line and it'll put you in PS C:\>
mode instanctly, where you can directly start writing PS.
Upvotes: 18
Reputation: 531
Not sure if you are coding these programs, but this is a simple example of how you'd do it.
program1.c
#include <stdio.h>
int main (int argc, char * argv[] ) {
printf("%s", argv[1]);
return 0;
}
rgx.cpp
#include <cstdio>
#include <regex>
#include <iostream>
using namespace std;
int main (int argc, char * argv[] ) {
char input[200];
fgets(input,200,stdin);
string s(input)
smatch m;
string reg_exp(argv[1]);
regex e(reg_exp);
while (regex_search (s,m,e)) {
for (auto x:m) cout << x << " ";
cout << endl;
s = m.suffix().str();
}
return 0;
}
Compile both then run program1.exe "this subject has a submarine as a subsequence" | rgx.exe "\b(sub)([^ ]*)"
The |
operator simply redirects the output of program1's printf
operation from the stdout
stream to the stdin
stream whereby it's sitting there waiting for rgx.exe to pick up.
Upvotes: -5
Reputation: 36348
This should work:
for /F "tokens=*" %i in ('temperature') do prismcom.exe usb %i
If running in a batch file, you need to use %%i
instead of just %i
(in both places).
Upvotes: 21
Reputation: 3115
Try this. Copy this into a batch file - such as send.bat - and then simply run send.bat
to send the message from the temperature program to the prismcom program.
temperature.exe > msg.txt
set /p msg= < msg.txt
prismcom.exe usb "%msg%"
Upvotes: 40