2016-03-27 1 views
0

У меня есть 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(); 

ответ

2

Вам нужно обернуть имя файла в двойные кавычки, так же, как вы это обычно из командной строки.

Попробуйте это:

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

Попытка поставить кавычки путь

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

или, если вы предпочитаете

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

Используйте кавычки filename:

Arguments = $"/DISASM \"{filename}\"", 
Смежные вопросы