如果文件夹包含空格,如何处理文件路径中的空格?

public static void launchProcess(string processName, string arguments, out string output) { Process p = new Process { StartInfo = { UseShellExecute = false, RedirectStandardOutput = true, FileName = processName, Arguments = arguments } }; p.Start(); output = p.StandardOutput.ReadToEnd(); p.WaitForExit(); } 

如果我的参数包含文件名,例如:

 D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS 

然后我得到错误:

它需要双打引号,但也可能需要@来对待字符串逐字 ( 逐字字符串 ),即“\”在字符串中有特殊含义,例如\ t表示选项卡,所以我们要忽略\

所以不仅是双引号,还有@

 string myArgument = @"D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS"; 

如果有空格,我在大多数应用程序中使用以下内容(如果需要)在字符串的开头和结尾添加双引号。

 public string AddQuotesIfRequired(string path) { return !string.IsNullOrEmpty(path) ? path.Contains(" ") ? "\"" + path + "\"" : path : string.Empty; } 

编辑根据建议,更改了函数的名称,并添加了空引用检查。

例子..

 AddQuotesIfRequired(@"D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS"); 

返回"D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS"

 AddQuotesIfRequired(@"C:\Temp"); 

返回C:\Temp

 AddQuotesIfRequired(null); 

返回空字符串

我意识到这是一个老线程,但对于那些在我之后看到这个的人,你也可以这样做:

 string myArgument="D:\\Visual Studio Projects\\ProjectOnTFS\\ProjectOnTFS" 

通过转义反斜杠,您不必使用@符号。 只是另一种选择。