【问题标题】:C# escape & char in arguments path when running cmd.exe /C运行 cmd.exe /C 时参数路径中的 C# 转义和字符
【发布时间】:2020-05-22 15:57:49
【问题描述】:

请有人建议我在尝试启动如下进程时如何转义字符串中的“&”字符:

            var arguments = $"/C \"C:\\Here & Here\\MyExe.exe\"";
            Process process = new Process
            {
                StartInfo =
                {
                    Arguments = arguments,
                    FileName = "cmd.exe",
                    CreateNoWindow = true,
                    WindowStyle = ProcessWindowStyle.Hidden,
                    UseShellExecute = false
                }
            };
            process.Start();

我需要使用 cmd.exe /C 执行该过程 我尝试使用 ^& 替换字符串 像这样:

var arguments = $"/C \"C:\\Here ^& Here\\MyExe.exe\"";

但它仍然找不到路径。

在一个 cmd 窗口中,我只会执行 cmd.exe /C ""C:\Here ^& Here\MyExe.exe"",它只是不通过进程启动来工作

谢谢

【问题讨论】:

  • 您是要突破 cmd 实例或 C# 实例中的 & 还是两者兼而有之?文件的文字路径是什么。
  • 在文件的路径中没有&,我只是想将它作为参数的一部分传递进来,这是我似乎无法逃脱字符的原因。在一个 cmd 窗口中,我只需执行此 cmd.exe /C ""C:\Here ^& Here\MyExe.exe"" 并且它不是通过进程启动来工作的
  • 试试这个:var arguments = @"/C ""C:\Here ^& Here\MyExe.exe""";
  • 谢谢,但仍然返回相同的退出代码 1..
  • & 之前尝试放置* 通配符,看看它是否有效。所以应该是var arguments = $"/C \"C:\\Here *\\MyExe.exe\"";

标签: c# .net cmd


【解决方案1】:

如果路径是双引号,它工作正常:

var arguments = "/c \"\"C:\\Here & Here\\MyExe.exe\"\"";

【讨论】:

    猜你喜欢
    • 2012-03-16
    • 2010-10-28
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 2013-04-02
    相关资源
    最近更新 更多