Perder el resultado de error de un command en el elemento (set) de la statement FOR del file por lotes

Tengo un file por lotes que hace un git pull en un repository git. Quiero ver el resultado en la window de la console y en un file de logging. Tengo un montón de código de script en el file de process por lotes para llevarme al directory correcto y luego ejecuta lo siguiente:

FOR /F "tokens=*" %%f IN ('git pull --ff-only') DO ( SET z=%%f ECHO !z:^|=^^^|! 2>&1 | C:\Bin\tee.exe -a %logFile% ) 

tee.exe es un pequeño progtwig que envía el resultado a la console y al file de logging especificado.

Esto funciona bien siempre que el command git tenga éxito. Veo la list de files modificados, etc., tanto en la console como en el file de logging. Sin embargo, si el command git genera un error, por ejemplo, la extracción sobrescribiría los cambios locales, veo lo siguiente en la window de la console:

 Pulling repository \GitHub\Dummy error: Your local changes to the following files would be overwritten by merge: Dummy/Dummy.Tests/Dummy.Tests.csproj Dummy/Dummy.Tests/packages.config Dummy/Dummy/Dummy.csproj Dummy/Dummy/packages.config Please commit your changes or stash them before you merge. Aborting Updating 8b9f90e..410251c 

Sin embargo, en el file de logging, solo veo esto:

 Pulling repository \GitHub\Dummy Updating 8b9f90e..410251c 

¿Hay alguna forma de get la información de error volcada en el file de logging?

solo maneja STDOUT, no STDERR, por lo que debe networkingirigir STDERR a STDOUT dentro del ciclo for . Al hacer eco de %%f , ya es demasiado tarde:

 FOR /F "tokens=*" %%f IN ('git pull --ff-only 2^>^&1') DO ( ECHO %%f| C:\Bin\tee.exe -a C:\Bin\GitPull.log ) 

(y escaping de caracteres especiales como <>&|,= )