Просто используйте cmd.exe
:
var startInfo = new ProcessStartInfo();
string path = Directory.GetCurrentDirectory() + @"\foldername";
startInfo.FileName = "cmd.exe";
startInfo.Arguments = @"/c cd " + path + " && do_run arg1 arg2";
Process.Start(startInfo);
Windows по умолчанию включает System32 (где находится cmd.exe
) в системную переменную PATH
(то есть вы можетезапустите cmd.exe
из любого места, и он его найдет).
Относительно того, почему ваш первый код не работает, я не уверен на 100%, но если вы работаете в .NET Core, вы можетенеобходимо установить UseShellExecute
на true
, поскольку, в отличие от .NET Framework, по умолчанию используется false
.Тем не менее, я бы сказал, что выше - лучший вариант.