1

这似乎是一个晦涩难懂的问题,但在这里:

有没有办法将字符串文字与 DirectoryInfo 枚举(包含文件路径)连接起来,同时在文件路径周围添加引号?此外,在将 DirectoryInfo 枚举转换为字符串时,如何防止反斜杠加倍?我的情况如下:

DirectoryInfo filePathDirectory = new DirectoryInfo(filePath);
Process a = new Process();

a.StartInfo.FileName = "C:\\Windows\\system32\\lpr.exe";
a.StartInfo.Arguments = "-SServername.Domain.net -Plp " + "\"" + filePathDirectory + "\"";
a.StartInfo.UseShellExecute = false;
a.Start();
a.WaitForExit();

filePathDirectory以以下值开头:

{\\ServerName\Share\Folder\Folder\FileName.xls}

我认为它一旦连接起来就会转换成一个字符串,a.StartInfo.Arguments它被分配了以下值:

-SServername.Domain.net -Plp \"\\\\ServerName\\Share\\Folder\\Folder\\FileName.xls\"

这很糟糕,因为路径中的反斜杠数量增加了一倍。如何确保没有反斜杠添加到路径中?

最重要的是,为了添加引号,我使用了反斜杠转义序列;但是这个转义序列的反斜杠被无意中添加到我的字符串中。如何在包含的文件路径周围添加引号a.StartInfo.Arguments

PS我希望这是有道理的,如果您需要澄清,请提出问题。

4

1 回答 1

2

反斜杠不加倍,引号的反斜杠也“不存在”。您可以通过Console.WriteLine(a.StartInfo.Arguments)或进行验证MessageBox.Show(a.StartInfo.Arguments)

您所看到的 - 在我假设的调试器中 - 是翻译转义字符的字符串表示 - 就像您需要在 IDE 中输入它一样。

例子:

string s = "\"";

这将在调试器中"\""显示为,但在屏幕上显示为"

在此处输入图像描述

于 2012-09-21T13:59:53.470 回答