使用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM