2016-03-27 9 views
0

私は、ユーザーがファイルを選択し、objdumpに対してこれを実行して、コンテンツをGUIに出力できるようにするC#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"""; 

か、filename周り

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

使用引用符を好む場合:

Arguments = $"/DISASM \"{filename}\"", 
関連する問題