2016-04-11 12 views
-1

以下のC#コードのfilesパラメータに.zipファイルの場所を渡す必要があります。7-Zipエラーを取得中 - Process.Start()メソッドにスペースを含むファイル名を渡すことができません

ファイル名に空白が含まれていない場合は、すべて正常に動作しています。しかし、ファイル名にスペースが含まれていれば、それはエラー以下になります。

以下のアーカイブを見つけることができません私のコードです:誰がどのように私はこの問題を解決することができ、私を提案してくださいことはできますか?

 static void UnzipToFolder(string zipPath, string extractPath, string[] files) 
    { 
     string zipLocation = ConfigurationManager.AppSettings["zipLocation"];    

     foreach (string file in files) 
     { 
      string sourceFileName = string.Empty; 
      string destinationPath = string.Empty; 
      var name = Path.GetFileNameWithoutExtension(file); 
      sourceFileName = Path.Combine(zipPath, file); 
      destinationPath = Path.Combine(extractPath, name); 

      var processStartInfo = new ProcessStartInfo(); 
      processStartInfo.FileName = zipLocation; 
      processStartInfo.Arguments = @"x " + sourceFileName + " -o" + destinationPath; 
      processStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
      var process = Process.Start(processStartInfo); 
      process.WaitForExit(); 
     } 
    } 
+1

感謝をしても私に理由を告げずに。 –

答えて

3

ファイルパスの前後に引用符を追加します。

processStartInfo.Arguments = "x \"" + sourceFileName + "\" -o \"" + destinationPath + "\""; 

または、読みやすくするために(C#6で):ダウン投票誰かに

processStartInfo.Arguments = $"x \"{sourceFileName}\" -o \"{destinationPath}\""; 
関連する問題