How can I, in Windows, use the output of a script/command as an argument for another script? (A pipe | will not work here, since that other script doesn't read from the standard input)
Too clarify: I have AnotherScript that needs an argument arg, e.g.:
AnotherScript 12
now I want the argument (12 in the example) to come from the output of a script, call it ScriptB. So I would like something along the lines of
AnotherScript (ScriptB)
The AnotherScript is actually a python script that requires an argument, and ScriptB is a cygwin bash script that produces some number, so the way I would like to use it is something like:
c:\Python26\python.exe AnotherScript (c:\cygwin|bin|bash --login -i ./ScriptB)
Thanks for the answers. However, given the laborious 'for' construct required, I've rewritten AnotherScript to read from the standard input. That seems like a better solution.
Note: All this requires the commands to be in a batch file. Hence the double %
signs.
You can use the for
command to capture the output of the command:
for /f "usebackq delims=" %%x in (`ScriptB`) do set args=%%x
then you can use that output in another command:
AnotherScript %args%
This will cause %args%
to contain the last line from ScriptB
's output, though. If it only returns a single line you can roll this into one line:
for /f "usebackq delims=" %%x in (`ScriptB`) do AnotherScript %%x
When used outside a batch file you have to use %x
instead of %%x
.
However, if ScriptB
returns more than one line, AnotherScript
runs for each of those lines. You can circumvent this—though only within a batch file—by breaking after the first loop iteration:
for /f "usebackq delims=" %%x in (`ScriptB`) do AnotherScript %%x & goto :eof
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With