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

本文关键字:处理 路径 空白 参数 命令行 | 更新日期: 2023-09-27 18:27:08

我的控制台应用程序中存在空格问题。我的应用程序因不允许的字符而崩溃。

我的应用程序需要一个参数,该参数是文件系统的路径。所以它会像这个一样被称为

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

有了这些信息,我想在给定的文件夹中创建一个文件,但由于不允许使用char,这是不可能的。

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

我可以在调试器中看到targetJobFile的值是

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

在那里我收到了例外。感谢

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

您需要从参数中删除引号,因此在使用它之前,请使用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.Eescape(new string(Path.GetInvalidPathChars()))).Replace(PathName,replaceChar);