在C#

时间:2018-03-11 03:44:05

标签: c# cmd string-interpolation processstartinfo

我试图在C#中使用来自ProcessStartInfo的cmd.exe打开一些参数 但我的文件夹导航需要包括双引号,例如。 " C:\这是\ my \ folder site"

如您所见,使用双引号的原因是文件夹名称上有空格。

这是我的代码

var ddd = "\"" + projectPath + "\"";
        var strCmdTxt = "/c  cd " + ddd + " && code .";

        System.Diagnostics.Process process = new System.Diagnostics.Process();
        System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo
        {
            WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden,
            FileName = "cmd.exe",
            Arguments = strCmdTxt, UseShellExecute = true, CreateNoWindow= true
        };
        process.StartInfo = startInfo;
        process.Start();

但它运行的是这样的

cd \" C:\这是\ my \ folder site \"

,只是让我回到C盘

命令应为 cd" C:\这是\ my \ folder site"

2 个答案:

答案 0 :(得分:0)

看起来您要尝试实现的是在指定文件夹中启动VS Code。考虑使用您正在启动的进程的工作目录,而不是尝试导航到该目录并在那里启动VS Code。这是一种有助于此的方法:

private static void StartVSCodeInFolder(string projectPath)
{
    using (System.Diagnostics.Process process = new System.Diagnostics.Process())
    {
        System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo
        {
            WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden,
            FileName = "C:/Program Files/Microsoft VS Code/Code.exe",
            Arguments = ".",
            UseShellExecute = false,
            CreateNoWindow = true,
            WorkingDirectory = projectPath
        };
        process.StartInfo = startInfo;
        process.Start();
    }
}

希望这有帮助。

答案 1 :(得分:0)

您是否可以使用Environment类更改工作目录,只需使用" code.exe"。

这似乎是一种更清洁的方法。

{{1}}