Path.GetFileName(inputFile)由于有空格而返回错误的文件名

时间:2014-05-30 19:10:37

标签: c# .net file command-line

对于方法Path.GetFilenAME(FILE)来说,这是c#4.5的一个错误,它返回一个空格的文件名直到第一个空格?我遇到了这个问题,并没有意识到最初发生了什么。示例代码和结果如下所示:

//ex: args[0] = "C:\Users\cpharr\Desktop\Testruns\New_Test_2014 test file.pdf"

String inputFile = args[0];                                
String tempFileName = Path.GetFileName(inputFile);

//or ....

String inputFile = Path.GetFileName(args[0]);                                

//inputFile is now equal to "New_Test_2014 as the file name instead of New_Test_2014 test file.pdf."

1 个答案:

答案 0 :(得分:3)

在命令行中传递包含空格的文件名时,需要用双引号将它们包装起来。当您启动.exe时,应该像这样调用它:

myprog.exe "c:\path\with spaces\in the\middle\file.pdf"

如果您不这样做,系统命令行解析器会将每个段视为单独的命令行参数。这将导致您的程序在args数组中接收多个参数。这是Windows中的标准行为,任何采用命令行参数的程序都将以这种方式工作(不仅仅是.NET程序)。