2017-04-05 432 views
1

在linux下,可以做T這樣的:的Windows CMD傳遞一個命令的輸出作爲參數傳遞給另一個

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

或簡單的情況

ls $(pwd) 

問題是我怎麼能達到同樣的在Windows中? (不使用批處理文件,命令提示符中的單行文本)。並非所有命令都支持管道,因此我們如何評估一個並將結果作爲參數傳遞給另一個?

我試過管道和<>但沒有工作。

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

試試你自己,它期望一個文件。而|無法正常工作或爲git diff不支持它

git status -s -b | sed -n '2p' | cut -d' ' -f2- | git diff // results in illegal seek 
+0

在Windows中使用雙引號而不是單引號(如在Linux上)。 – user2956477

+0

嘗試使用'^'轉義管道,即'-s -b^| sed' –

回答

2

有一個在cmd沒有$運營商。
重定向操作符(<>>>)預計文件或流句柄。
|通過標準輸出的命令轉換成另一種一個的標準輸入的管。

A for /F loop但能夠捕獲命令的輸出並將其提供給變量引用(示例中的%A);請參閱以下代碼:

for /F "usebackq delims=" %A in (`git status -s -b ^| sed -n '2p' ^| cut -d' ' -f2-`) do git diff %A 
+0

這正是我所期待的。更新'for for/F「usebackq delims =」%A in(\'git status -s -b^| sed -n'$ 1p'^ | cut -d「」-f3 \')do git diff%A $ 2 $ 3 $ 4'($ n是這個別名的命令行參數),它會根據'git status'輸出的數字來區分正確的文件 – Arijoon

相關問題