C# 如何删除路径中的空格?

C# 如何删除路径中的空格?,c#,process,path,whitespace,command-line-arguments,C#,Process,Path,Whitespace,Command Line Arguments,我必须启动程序文件中的进程。但问题是,启动过程并没有占用路径中的空间 Process regeditProcess = Process.Start("regedit.exe", "/s C:\\Program Files\\Test Folder\\sample.reg"); 路径: “程序文件”中的程序和文件之间有一个空格。 这是我的问题。如何避免空格?您应该传递包含空格的命令行参数,用引号(“)括起来,如下所示: Process regeditProcess = Process.Start

我必须启动程序文件中的进程。但问题是,启动过程并没有占用路径中的空间

Process regeditProcess = Process.Start("regedit.exe", "/s C:\\Program Files\\Test Folder\\sample.reg");
路径:

“程序文件”中的程序和文件之间有一个空格。
这是我的问题。如何避免空格?

您应该传递包含空格的命令行参数,用引号(“)括起来,如下所示:

Process regeditProcess = Process.Start("regedit.exe", "/s \"C:\\Program Files\\Test Folder\\sample.reg\"");

您应该以引号(“)形式传递包含空格的命令行参数,如下所示:

Process regeditProcess = Process.Start("regedit.exe", "/s \"C:\\Program Files\\Test Folder\\sample.reg\"");

Process.Start
不是这里的问题,问题是regedit.exe不接受参数中的空格。引用如下:

Process.Start("regedit.exe", "/s \"C:\\Program Files\\Test Folder\\sample.reg\"");

另外,您应该使用
%ProgramFiles%
或类似的工具来获取程序文件文件夹,而不是硬编码
“C:\\ProgramFiles”

Process.Start
不是这里的问题,问题是regedit.exe不接受参数中的空格。引用如下:

Process.Start("regedit.exe", "/s \"C:\\Program Files\\Test Folder\\sample.reg\"");

另外,您应该使用
%ProgramFiles%
或类似的工具来获取程序文件文件夹,而不是硬编码
“C:\\ProgramFiles”

您可以这样做来获取程序文件

Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles)
下面是更详细的代码

if(Environment.Is64BitOperatingSystem)
{
Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFilesX86)
}
else
{
Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles)
}

您可以这样做来获取程序文件

Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles)
下面是更详细的代码

if(Environment.Is64BitOperatingSystem)
{
Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFilesX86)
}
else
{
Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles)
}

正确的做法是引用包含空格的路径。因此,参数字符串应如下所示:

"/s \"C:\\Program Files\\Test Folder\\sample.reg\""
不过,在处理路径时,通常应始终使用逐字逐句的文字字符串

@"/s ""C:\Program Files\Test Folder\sample.reg"""
否则,可以使用8.3名称转换路径。我不知道有什么方法可以在框架中为您做到这一点,但规则很简单。如果您的长名称长度超过6个字符,则取前6个非空格字符,并在其后面加上波浪号(
~
),后跟一个数字(通常以
1
开头)。如果多个文件具有相同的6个字符,则该数字将按字母顺序递增。因此,在您的情况下,可以这样写:

@"/s C:\Progra~1\TestFo~1\sample.reg"

正确的做法是引用包含空格的路径。因此,参数字符串应如下所示:

"/s \"C:\\Program Files\\Test Folder\\sample.reg\""
不过,在处理路径时,通常应始终使用逐字逐句的文字字符串

@"/s ""C:\Program Files\Test Folder\sample.reg"""
否则,可以使用8.3名称转换路径。我不知道有什么方法可以在框架中为您做到这一点,但规则很简单。如果您的长名称长度超过6个字符,则取前6个非空格字符,并在其后面加上波浪号(
~
),后跟一个数字(通常以
1
开头)。如果多个文件具有相同的6个字符,则该数字将按字母顺序递增。因此,在您的情况下,可以这样写:

@"/s C:\Progra~1\TestFo~1\sample.reg"