码迷,mamicode.com
首页 > 其他好文 > 详细

关于使用 ProcessStartInfo 类时的文件目录包含空格问题的解决方法

时间:2015-11-12 17:37:17      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

  前段时间项目中使用7-zip压缩生成EPUB文件(2.01),但通过 EPUB-Checker.exe 软件检测发现 mimetype 文件不是第一个归档文件,经过对比怀疑7z中有自己默认的归档顺序,遂改用 winrar.exe 进行压缩(项目采用C#编写,通过CMD执行压缩命令),压缩步骤为:

  1、压缩 mimetype 文件,命令:

    "C:\Program Files\WinRAR\winrar.exe"  a -ep1 C:\Users\Administrator\AppData\Roaming\KPP\6CA24687FFDB9DBA\Output\epub\epub.zip C:\Users\Administrator\AppData\Roaming\KPP\6CA24687FFDB9DBA\Output\epub\mimetype 

    其中:C:\Users\Administrator\AppData\Roaming\KPP\6CA24687FFDB9DBA\Output\epub\ 为文件存放目录

  2、压缩 OPS 目录,命令:

    "C:\Program Files\WinRAR\winrar.exe"  a -ep1 C:\Users\Administrator\AppData\Roaming\KPP\6CA24687FFDB9DBA\Output\epub\epub.zip C:\Users\Administrator\AppData\Roaming\KPP\6CA24687FFDB9DBA\Output\epub\OPS

  3、压缩 META-INF 目录,命令:

    "C:\Program Files\WinRAR\winrar.exe"  a -ep1 C:\Users\Administrator\AppData\Roaming\KPP\6CA24687FFDB9DBA\Output\epub\epub.zip C:\Users\Administrator\AppData\Roaming\KPP\6CA24687FFDB9DBA\Output\epub\META-INF

  按照这样的步骤执行了一下,以为会成功,但实际发现在一般情况下确实没问题,在XP系统上总报找不到某个文件,细看才发现是因为压缩文件(无论源文件和目标文件)中包含有空格时会被截断并当成几个但单独的命令参数,仔细一想就释然了(你包含空格控制台当然无法知道你想输入的是什么,这不是控制台的问题,更不是rar的问题)。

  找到了原因开始摸索着解决它,发现无论是在命令上整体加引号还是直接取出空格,或是给空格加引号都不行,废了一些时间后想起了我们的好盆友度娘,通过度娘找到CSDN的@hufeikong君,此君早在10年就遇到这样的问题经大家合力找到了一下解决方案:

    string command = @"""C:\Program Files\WinRAR\winrar.exe""  a -ep1 ""C:\Users\Administrator\AppData\Roaming\KPP\6CA24687FFDB9DBA\Output\epub\epub.zip""  ""C:\Users\Administrator\AppData\Roaming\KPP\6CA24687FFDB9DBA\Output\epub\mimetype""";
    startInfo.Arguments = @"/C (" + command + @")";

  即在把所有文件路径单独包含在引号内,并将命令整体包含在括号内,这样再次执行,无论什么样的目录和文件名都能正常执行,问题完美解决!!

  鉴于该问题(EPUB检测错误)解决之耗时及对本人的折磨之深,再此感谢度娘、CSDN、博客园以及为代码、资料、问题等资源分享作出贡献的人们,是你们的帮助使得更多问题得到解决!

 

关于使用 ProcessStartInfo 类时的文件目录包含空格问题的解决方法

标签:

原文地址:http://www.cnblogs.com/WhiteDragon/p/4959316.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!