【问题标题】:double quote error when using ProcessStartInfo in C#在 C# 中使用 ProcessStartInfo 时出现双引号错误
【发布时间】:2018-08-19 08:42:55
【问题描述】:

我正在尝试使用 C# 中 ProcessStartInfo 中的 cmd.exe 打开运行一些参数 但我的文件夹导航需要包含双引号,例如。 "C:\这是\我的\文件夹站点"

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

这是我的代码

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:\这是\我的\文件夹站点\"

哪个,只是让我回到 C 盘

命令应该是cd "C:\this is\my\folder site"

【问题讨论】:

  • 你能贴出projectPath的实际值吗,因为我觉得问题出在那儿。
  • 片刻,我认为“开始目录”有一个开关,必须放在/C之后。

标签: c# cmd string-interpolation processstartinfo


【解决方案1】:

看起来您想要实现的是在指定文件夹中启动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();
    }
}

希望这会有所帮助。

【讨论】:

  • 对不起,我得到了同样的结果。
【解决方案2】:

您不能使用环境类更改工作目录并仅使用“code.exe”。

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

Environment.CurrentDirectory = @"C:\Program Files\Microsoft VS Code";

【讨论】:

    猜你喜欢
    • 2018-08-03
    • 1970-01-01
    • 2021-12-06
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多