¿Cómo obtengo el resultado de una llamada a GIT en una variable en un script por lotes?

Tengo un command git para get el SHA más reciente del repository actual de la siguiente manera:

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

Tengo un script de lote de Windows en el que me gustaría usar esto de la siguiente manera:

 SET CURRENT_SHA=??? 

Pero no sé cómo hacer que la salida de esa llamada entre en la variable para poder usarla.

Editar

He intentado lo siguiente (que parece ser el consejo general que he leído aquí y en otros lugares):

 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% 

..pero obtengo:

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

Entonces, ¿presumiblemente hay un problema con las comillas?

No tengo un sistema de Windows a mano para probar, pero creo que hay algo parecido a esto:

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

Tenga en count que debe escapingse el "% H", pero para usar esta línea en un file por lotes también necesita duplicar todo. Es posible que también necesite escaping de las comillas dobles con ^ . Creo que esto debería funcionar:

 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% 

Pero realmente, si quieres hacer la progtwigción de shell en Windows simplemente usa Powershell y luego puedes hacer:

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