命令行参数中包含空格的文件路径无法传递?

3
我有一个 C# GUI,允许用户选择文件,然后运行它来输出 objdump 的内容到 GUI 中。
但是,当用户选择的文件路径包含空格时,会导致命令行执行失败。
我在 Stackoverflow 上查看了一下,似乎在 Windows 脚本中使用各种方法来解决带空格的路径问题。然而,因为我是通过编程传递文件名的,所以我无法这样做 / 是否有更简单的方法?
这是我的代码:
private void button1_Click(object sender, EventArgs e)
{

    DialogResult result = openFileDialog1.ShowDialog();
    if (result == DialogResult.OK){
        dataGridView1.Rows.Clear();
        dataGridView1.Refresh();

        string filename = openFileDialog1.FileName;           //May contain spaces
        try
            {
                var proc = new Process
                {
                    StartInfo = new ProcessStartInfo
                    {
                        FileName = "dumpbin.exe",
                        Arguments = "/DISASM " + filename,    // Causing this to fail
                        UseShellExecute = false,
                        RedirectStandardOutput = true,
                        CreateNoWindow = true
                    }
                };

                proc.Start();
3个回答

4

您需要使用双引号将文件名括起来,就像在命令行中一样。

尝试这样做:

Arguments = "/DISASM \"" + filename + "\"",

1
尝试在路径周围加上引号。
pSInfo.Argument = @"""c:\test cases\testfile.csv""";

或如果你更喜欢

pSInfo.Argument = "\"c:\\test cases\\testfile.csv\"";

1

文件名周围使用引号:

Arguments = $"/DISASM \"{filename}\"",

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接