這是我的問題。
當您呼叫git status --porcelaingit 時,無論命令的輸出是什么,都會回傳 0。
所以%ERRROREVEL%這里對我沒有幫助。
我需要能夠將輸出存盤git status --porcelain在一個變數中,然后根據其中是否存在任何字符來實作是否有變化。
所以基本上我需要這個偽代碼:
set GitStatusOutput = git status --porcelain
set HasChanges = findstr . in %GitStatusOutput%
但我堅持在 CMD 中運行這個簡單的需求。我無法更改為 bash 或 PowerShell。
我努力了:
for /f "tokens=*" %%a in ('git -C %%s status --porcelain') do (set GitStatusResult=%%a)
echo %GitStatusResult%
不作業。
我努力了:
set HasChangesCommand=git -C %%s status --porcelain | findstr . && echo 1 || echo 0
echo %HasChangesCommand%
不作業。
我怎樣才能做到這一點?
請注意:
我問了很多問題,但沒有成功。
我有一個非常非常簡單的需求,我被困了幾個小時。
感謝您的寶貴時間,但我不需要花哨的解釋。我只需要一個簡單的答案。
uj5u.com熱心網友回復:
您的for回圈將輸出的每一行一個接一個地分配給變數,因此最后變數包含輸出的最后一行。如果這恰好是一個空行,則該變數也將為空。但是在這種情況下你不需要for回圈。只需過濾命令的輸出并根據結果設定變數(找到至少一個 char / 發現沒有 char):
git -C %%s status --porcelain | findstr . >nul && set "HasChangesCommand=1" || set "HasChangesCommand=0"
不要忘記,如果要在同一代碼塊/回圈中使用變數,則需要延遲擴展。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/482007.html
上一篇:安全密碼保護批次
