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

本文关键字:空间 处理 文件 路径 何处理 包含 文件夹 如果 | 更新日期: 2023-09-27 18:00:36

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.IsNullOrWhiteSpace(path) ? 
        path.Contains(" ") && (!path.StartsWith("'"") && !path.EndsWith("'"")) ? 
            "'"" + path + "'"" : path : 
            string.Empty;
}

示例

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

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

AddQuotesIfRequired(@"C:'Test");

返回C:'Test

AddQuotesIfRequired(@"""C:'Test Test'Wrap""");

返回"C:'Test Test'Wrap"

AddQuotesIfRequired(" ");

返回空字符串

AddQuotesIfRequired(null);

返回空字符串

编辑

根据建议,更改了函数的名称,还添加了一个空引用检查。

添加了检查双引号是否已经存在于字符串的开头和末尾,以避免重复。

将字符串检查函数更改为IsNullOrWhiteSpace,以检查空白以及空或null,如果是,则返回空字符串。

我意识到这是一个旧线程,但对于在我之后看到它的人来说,你也可以这样做:

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

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