从特定文件夹执行命令行

use*_*947 18 c# cmd

我有一个项目,从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");
Run Code Online (Sandbox Code Playgroud)

请注意,由于我的解决方案的性质,我不能使用批处理文件,不能使用c:\​​ work\SomeVariantFolder作为硬编码文件夹,因为"SomeVariantFolder"名称在某些情况下可能会更改.

任何帮助都会得到满足

Iro*_*eek 22

尝试设置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
};
Run Code Online (Sandbox Code Playgroud)

参考:ProcessStartInfo.WorkingDirectory属性