Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Windows cmd pass output of one command as parameter to another

Tags:

In linux it is possible t do this:

git diff $(git status -s -b | sed -n '2p' | cut -d' ' -f2-) 

or a simpler case

ls $(pwd)  

The question is how can I achieve the same in windows? (not using a batch file, a one liner in command prompt). Not all commands support piping so how can we evaluate one and pass result as parameter to another?

I've tried piping and < and > but none work.

git diff < (git status -s -b | sed -n '2p' | cut -d' ' -f2-)  

Try that yourself it expects a file. And | doesn't work either as git diff doesn't support it

git status -s -b | sed -n '2p' | cut -d' ' -f2- | git diff // results in illegal seek 
like image 811
Arijoon Avatar asked Apr 05 '17 08:04

Arijoon


People also ask

How do you use the output of one command in another command?

You can make it do so by using the pipe character '|'. Pipe is used to combine two or more commands, and in this, the output of one command acts as input to another command, and this command's output may act as input to the next command and so on.

How do I pass from one command to another in Windows?

The | command is called a pipe. It is used to pipe, or transfer, the standard output from the command on its left into the standard input of the command on its right. # First, echo "Hello World" will send Hello World to the standard output.


1 Answers

There is no $ operator in cmd.
Redirection operators (<, >, >>) expect files or stream handles.
A pipe | passes the standard output of a command into the standard input of another one.

A for /F loop however is capable of capturing the output of a command and providing it in a variable reference (%A in the example); see the following code:

for /F "usebackq delims=" %A in (`git status -s -b ^| sed -n '2p' ^| cut -d' ' -f2-`) do git diff %A 
like image 121
aschipfl Avatar answered Oct 19 '22 07:10

aschipfl