Выполнить командную строку из определенной папки

У меня есть проект, запущенный из c:\work\SomeVariantFolder\MySolution\MyProject\Bin\Debug, и мне нужно выполнить командную строку из этого проекта из одной из подпапок: c:\work\SomeVariantDev. Проблема, с которой я сталкиваюсь, состоит в том, чтобы получить из папки, в которой работает мой проект, в папку, откуда я могу запустить эту командную строку.

Обратите внимание, что я не могу использовать командный файл для этого решения.

То, что я пытался сделать, - объявить частный метод, который выполняет три команды из того же процесса, перейдя четыре папки вверх и затем выполнив мою команду, но это, похоже, не работает. Я чувствую, что я делаю что-то неправильно здесь, потому что, если я запустил эту команду из c:\work\SomeVariantFolder \, она хорошо распарится.

var process = new System.Diagnostics.Process();
var startInfo = new System.Diagnostics.ProcessStartInfo
                {
                       WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal,
                       FileName = "cmd.exe",
                       RedirectStandardInput = true,
                       UseShellExecute = false
                };

process.StartInfo = startInfo;
process.Start();



 process.StandardInput.WriteLine("cd..");
 process.StandardInput.WriteLine("cd..");
 process.StandardInput.WriteLine("cd..");
 process.StandardInput.WriteLine("cd..");

 process.StandardInput.WriteLine("my command");

Обратите внимание, что из-за характера моего решения я не могу использовать пакетные файлы и не могу использовать c:\work\SomeVariantFolder как жестко закодированную папку, так как имя "SomeVariantFolder" может измениться при некоторых обстоятельствах.

Любая помощь будет назначена

Ответ 1

Попробуйте установить WorkingDirectory свойство ProcessStartInfo для установки начальной директории для запуска процесса.

var startInfo = new System.Diagnostics.ProcessStartInfo
{
  WorkingDirectory = @"The\Process\Working\Directory",
  WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal,
  FileName = "cmd.exe",
  RedirectStandardInput = true,
  UseShellExecute = false
};

Ссылки: Свойство ProcessStartInfo.WorkingDirectory

Ответ 2

System.Environment.CurrentDirectory = @"..\..\..";
System.Diagnostics.Process.Start("MyCommand", "arg1, arg2, arg3");