如何在命令行参数中处理路径中的空格

问题描述:

我的控制台应用程序中有空白问题。由于不允许使用chararcters,我的应用程序崩溃。如何在命令行参数中处理路径中的空格

我的应用程序正在期待一个参数是文件系统的路径。所以它会被称为像这样

myProg.exe "D:\tmp\with whitespace\" 

有了这些信息,我想创建在给定文件夹一个文件,但这是因为不允许的字符的不可能的。

String pdfName = "foobar.pdf 
String datapath = args[0]; 
String targetJobFile = datapath + pdfName + ".txt";  

我可以在该targetJobFile值

"D:\tmp\with whitespace\"foobar.pdf.txt 

在那里我得到异常的调试器看到的。 感谢

+1

你应该使用'Path.Combine',它会处理像这样的问题。 - [MSDN上的Path.Combine](http://msdn.microsoft.com/en-us/library/system.io.path.combine(v = vs.110).aspx) – crashmstr 2014-10-20 17:57:19

+0

做这一行'String pdfName = “foobar.pdf”甚至编译?你的参数应该可以正常工作,因为它们用双引号引起来 – Habib 2014-10-20 17:57:34

您需要从参数中删除引号,所以在使用前,使用Trim

String realArg = args[0].Trim('"'); 

你已经有\Path.Combine会给你;但如果您不希望用户必须输入它,则使用Path.Combine是将路径分隔符转换为字符串的好方法。

为什么不检查"性格的存在,使像

 datapath = datapath.Replace("\"",""); 
     String targetJobFile = datapath + pdfName; 

的完整路径之前替换它们你可以去先行一步,并使用Path.GetInvalidPathChars()将返回不得全部无效字符在路径名称中将其从路径中删除,如下所示 -

modifiedPathName = new Regex(string.Format(“[{0}]”,Regex.Escape(new string(Path.GetInvalidPathChars()))))。替换(PathName,replaceChar);