2016-05-03 60 views
1

我有一個git命令來獲得當前回購的最新SHA如下:如何從調用GIT的輸出到批處理腳本中的變量?

git log --pretty=format:"%H" -n 1 

我有一個Windows批處理腳本,我想用這個作爲如下:

SET CURRENT_SHA=??? 

但我不知道如何從該調用中獲得輸出,以便將git加入變量中,以便我可以使用它。

編輯

我試過以下(這似乎是我在這裏和其他地方閱讀一般建議):

SETLOCAL ENABLEDELAYEDEXPANSION 
FOR /F "tokens=* USEBACKQ" %%i IN (`git log --pretty=format:"%H" -n 1`) DO (SET CURRENT_SHA=%%i) 
ECHO Current Sha: %CURRENT_SHA% 

..但我得到:

fatal: failed to stat 'format:i) ECHO Current Sha: 48bce83e800b96607afb2a387c4fcd7b0b0f037e 

所以推測可能是報價有問題?

+2

我認爲你需要加倍%至轉義爲'%H',然後再次因爲它在批處理文件中。 – Duncan

+0

那個和''逃脫'是'票。 –

回答

1

我沒有Windows系統方便的進行測試,但我認爲這些方針的東西:

FOR /F %i IN (`git log --pretty=format:"%%H" -n 1`) DO SET CURRENT_SHA=%i 

注意「%H」需要轉義,但在使用這種線批處理文件,你也需要雙重逃避一切。您可能還需要跳過與^的雙引號。我想,這應該工作:

SETLOCAL ENABLEDELAYEDEXPANSION 
for /f "tokens=* USEBACKQ" %%a in (`git log --pretty^=format:"%%H" -n 1`) do (SET CURRENT_SHA=%%a) 
ECHO Current Sha: %CURRENT_SHA% 

不過說真的,如果你想要做shell編程的Windows只是使用PowerShell,然後你可以這樣做:

$CURRENT_SHA=git log --pretty=format:"%H" -n 1 
+0

您先生,是一個傳奇。我終於把它用於'git log --pretty^= format:「%% H」-n 1「,結果證明它是等號並且缺少額外的'%' –

相關問題