使用exec调用winword打开带空格路径的文件

一、遇到错误的情形    

    在用JS打开本地的文件(Microsoft Word)时,如果文件路径带有空格,那么winword命令会将路径错误的解析。JS代码如下:        

1  var filePath = "D:/Biview/Corpus/生理学第七版/第一章 绪论.docx";
2  var openDocObj = new ActiveXObject("WScript.Shell");
3  openDocObj.Run("winword.exe " + filePath + "");

    上面的代码中变量“filePath”中的“第一章 绪论”字符串由于中间有一个空格,所以用winword命令将会导致路径解析错误,最终就无法打开用户指定正确路径的文件。

二、尝试解决方案

    1、由于Windows把常用软件的名称和路径记录在注册表里。打开Windows运行的开始菜单,单击运行,输入“winword D:/Biview/Corpus/生理学第七版/第一章 绪论.docx”。可以看到解析的错误路径:

这个错误路径是你的word的安装文件路径,所以你安装的路径不同,这个错误路径也会不同。

    2、记得在Java程序中获取带空格路径的文件时,空格表示为“%20”,所以我也将空格替换为“%20”去尝试,输入“winword D:/Biview/Corpus/生理学第七版/第一章%20绪论.docx”,可以看到程序是没有将“%20”转义为空格:

    3、经过不断的尝试发现给路径加上引号可以正确的解析空格:

         a、不加“\”和磁盘名,输入:“winword "Biview/Corpus/生理学第七版/第一章 绪论.docx"”,默认寻找系统盘用户文件夹下。

         b、加“\”不加磁盘名,输入:“winword \"Biview/Corpus/生理学第七版/第一章 绪论.docx"”,默认寻找安装Microsoft Word的磁盘根目录下。

         c、加“\”不和磁盘名,输入:“winword D:\"Biview/Corpus/生理学第七版/第一章 绪论.docx"”,默认寻找指定盘符的目录下。

三、最终解决方案

//var filePath = "D:/Biview/Corpus/生理学第七版/第一章 绪论.docx";
//改为:
var filePath = "D:\\\"Biview/Corpus/生理学第七版/第一章 绪论.docx\"";

四、测试环境

    操作系统:64位和32位window7
Word版本:Microsoft Word 2010
IE版本:IE9

五、总结

         1、如果是带空格路径的txt文件在运行里输入“notepad D:\Biview\Corpus\生理学第七版\第一章 绪论.txt”则可以正确打开。

         2、“winword”命令之后其他参数

            /m宏名:启动Word后运行指定宏,并禁止运行AutoExec宏。

            /n:启动Word而不打开任何文档。

            /t(空格)文档名:启动Word后打开指定文档作为模板。

           /a:禁止启动Word后加载项或载入共用模板,包括Normal。

           但如果Word不能正常启动,命令行的方式就会很有帮助,如果由于宏病毒导致不能启动,则可以试试/m;如果是由于加载项所致,则可以试试/a。

 

Java技术交流、学习、讨论,QQ群:67844123

posted @ 2012-06-16 23:08  youngto  阅读(3814)  评论(4编辑  收藏  举报