Escribir loggings de git en un file de text cuando se llama desde un file por lotes

Tengo un puñado de repositorys (quizás 15 o 20), la mayoría con varios cientos de commits. Me gustaría poder llamar a un file por lotes que tiene git escribir un logging de cada uno en un file de text para que pueda analizarlos (una vez que tengo los files separados, creo que puedo hacerlo fácilmente, y planeo usar C # más probable )

Sé que puedo usar git-bash en commands separados para hacer algo como:

cd "<path to my repo>" git --no-pager log > log.txt 

Esto me da los files que quiero, pero ¿cómo se puede lograr esto en un file por lotes?
¿Puedo usar git-bash de esta manera? ¿Tengo que usar git.exe en su lugar?

Si no es una buena idea hacer esto a través de un file por lotes, ¿es posible hacer esto en C # con Process.Start?

Algunas de las preguntas en las que me he enfocado hasta ahora:
¿Cómo exporto un logging de git a un file de text? (cómo me incliné a usar git-bash para crear un logging de text)
Ejecuta commands git desde una function C #
Ejecutando Bash Commands desde C #

Pero todavía no estoy seguro de cómo llamar a lo que quiero en cada uno de los repositorys individuales. Especialmente en un file por lotes, donde según mi conocimiento limitado, cada línea es un command independiente (¿eliminando git-bash.exe como una posibilidad?).

Actualizar

He intentado usar el siguiente código:

 public void RunGitForLogs() { Process process = new Process(); ProcessStartInfo processStartInfo = new ProcessStartInfo(); processStartInfo.WindowStyle = ProcessWindowStyle.Hidden; processStartInfo.FileName = @"C:\Program Files\Git\bin\git.exe"; processStartInfo.WorkingDirectory = @"E:\git\myRepo"; processStartInfo.Arguments = @"log --no-pager > C:\users\me\desktop\log.txt"; processStartInfo.RedirectStandardOutput = true; processStartInfo.RedirectStandardError = true; processStartInfo.UseShellExecute = false; process.StartInfo = processStartInfo; process.Start(); var outStd = new List<string>(); var outErr = new List<string>(); //http://sofes.miximages.com/a/16276776/2957232 while (process.StandardOutput.Peek() > -1) outStd .Add(process.StandardOutput.ReadLine()); while (process.StandardError.Peek() > -1) outErr .Add(process.StandardError.ReadLine()); process.WaitForExit(); } 

Pero en OutErr obtengo las siguientes líneas:

fatal: argumento ambiguo '>': revisión desconocida o ruta no en el tree de trabajo.
Use '-' para separar las routes de las revisiones, como esta:
'git […] – […]'

El uso de "estado" como argumento funciona como se espera para este repository (Muchas líneas en outStd, nada en outErr).

Probablemente no sea la forma más hermosa de hacerlo, pero esta línea llamada desde un file .cmd de Windows funciona para mí:

 cmd.exe /c start /d"c:\my\git\repo\dir" /b git.exe --no-pager log > log.txt