C # Executa programas e obtém variáveis de ambiente após a execução

Eu tenho dois scripts em lote que estou tentando executar usando c # e, em seguida, veja como eles afetam o ambiente.

O código que eu tenho é

string finalEnvVarsFile = Path.GetTempFileName();
string arguments = string.Format("/c {0} & {1} &  set > {2}", "foo.bat", "bar.bat", finalEnvVarsFile);

// Helper to run processes easier and reads in stdout and stderr.
ProcessHelper processHelper = ProcessHelper.Create("cmd.exe", arguments);
bool success = processHelper.Run(null, true, true);
foreach (var envVar in File.ReadAllLines(finalEnvVarsFile))
{
   Console.WriteLine("Environment Variable: " + envVar);
}

As variáveis de ambiente que recebo parecem ser o que o processo tinha originalmente, não o que os arquivos em lote estão definindo. Estou fazendo algo errado ou o arquivo bat não está sendo executado corretamente por algum motivo? Existe uma maneira melhor de fazer isso?

questionAnswers(3)

yourAnswerToTheQuestion