官术网_书友最值得收藏!

3.1 Shell調用WinRAR

WinRAR是一個文件壓縮管理共享軟件,由Eugene Roshal(所以RAR的全名是Roshal ARchive)開發。首個公開版本RAR 1.3發布于1993年。

WinRAR可以把文件(夾)壓縮為.rar或.zip格式,如圖3-1所示。

WinRAR可以解壓的格式有:.CAB、.ARJ、.LZH、.TAR、.GZ、.ACE、.UUE、.BZ2、.JAR、.ISO、.Z、.7Z、.RAR5。

啟動WinRAR軟件,單擊WinRAR軟件的菜單【選項/設置】,彈出“設置”對話框,切換到“集成”選項卡,可以設置WinRAR能夠解壓的文件格式,如圖3-2所示。

圖3-1 “壓縮文件名和參數”對話框

圖3-2 勾選關聯的擴展名

3.1.1 獲取WinRAR可執行文件路徑

WinRAR的執行文件一般情況下位于C:\Program Files\WinRAR\WinRAR.exe,如果個別計算機把這個軟件安裝到其他位置,使用前面講過的WshShell對象的RegRead方法讀取注冊表可以獲取其路徑。

下面的GetSetupPath函數用來獲取指定程序名的安裝路徑。

運行下面的過程,可以獲取WinRAR軟件的安裝路徑以及PowerPoint的安裝路徑。

上述程序的運行結果如圖3-3所示。

圖3-3 從注冊表中獲取應用程序的所在路徑

3.1.2 命令和開關

獲取到WinRAR.exe的所在路徑,就可以使用Shell函數調用這個可執行文件完成壓縮和解壓縮操作。

調用格式如下。

    Shell "WinRAR.exe的路徑 命令 開關 壓縮包路徑 文件路徑",vbNormalFocus(或者vbHide)

下面通過一個實例來介紹一下各參數的構造方法。

以上語句的功能是,調用WinRAR.exe把65.png圖片文件壓縮到Regdll.rar這個壓縮包中??梢钥闯龈鱾€參數之間用空格隔開,全部放入雙引號內,形成了一個長的字符串。其中的A就是一個命令,表示壓縮,上面這個實例沒有用到開關參數。

下面分別介紹一下WinRAR的命令參數和開關參數。命令參數的功能是告知WinRAR要執行什么操作,是壓縮、解壓縮還是刪除。開關參數是對命令參數的補充說明。

WinRAR命令參數

單擊WinRAR的菜單【幫助/幫助主題】,可以打開其幫助文件,依次展開節點“命令行模式/命令行”,可以看到所有命令參數的說明,如圖3-4所示。

圖3-4 WinRAR的命令參數幫助

最常用的4個命令參數及其功能如下。

 A:壓縮,添加到壓縮文件中。

 D:刪除,從壓縮包中刪除文件。

 E:解壓縮到當前目錄。

 X:以完全路徑解壓。

可以看出,從壓縮包中解壓出內容,有E和X兩個命令參數。其實,E命令參數等價于WinRAR解壓參數中的“不要提取路徑”;X命令參數等價于“提取完整路徑”,使用WinRAR軟件解壓一個壓縮包時,在“高級”選項卡里可以看到解壓方式選項,如圖3-5所示。

圖3-5 命令參數相應的含義

簡言之,E就是忽略壓縮包中的路徑,釋放所有文件到目標文件夾,而X則按照壓縮包原有的路徑結構釋放到目標文件夾。

WinRAR開關參數

在WinRAR軟件的幫助文件中,依次展開節點“命令行模式/參數”,可以看到所有開關參數的說明,如圖3-6所示。

下面是比較常用的開關參數。

 -ep:忽略路徑。

 -ep1:忽略基準路徑,但保持現有文件層次結構。

 -p或-hp:壓縮時加密碼。

 -df:壓縮后刪除原文件。

 -dr:壓縮后刪除原文件到回收站。

大致了解命令參數和開關參數后,下面通過具體實例加深學習。

圖3-6 WinRAR開關參數幫助

3.1.3 壓縮

假設文件夾“東北三省”中的內容如圖3-7所示。

圖3-7 文件夾內容的示意圖

如果采用命令A-ep則是忽略所有路徑,也就是忽略文件夾及其子文件夾,把“東北三省”下面管轄的所有文件(含遞歸)壓縮進去。完整代碼如下。

代碼分析:函數GetSetupPath用來獲取WinRAR軟件的安裝目錄,函數AddQuote用來處理Shell命令路徑中的空格。要注意Command中要保留必要的空格。

以上代碼段中,最重要的一句就是最后Shell函數的應用。

運行上面的“文件夾及其內容添加到壓縮包”過程,會在E:盤下生成package1.rar壓縮包,手工打開后,如圖3-8所示。

圖3-8 自動執行壓縮

可以看到,A-ep命令把文件夾中所有的“文件”掏出來,放入壓縮包,而不管這些文件原先在何處。

現在只需把上述代碼中的Command換成"A-ep1",刪除原先的壓縮包,再運行一次程序,效果如圖3-9所示。

圖3-9 連文件夾一起壓縮

可以看出,該命令保留了原先文件結構。因此,可以簡單地理解為-ep參數只壓縮文件,-ep1帶文件夾壓縮。

在實際應用中,根據需要選擇開關參數即可。

3.1.4 解壓縮

解壓縮是將壓縮包中的內容釋放到磁盤下的操作。解壓縮的命令有E和X。

下面的過程把壓縮包package1.rar中所有的文件解壓到Destination文件夾下。

運行上述程序,把壓縮包中的文件直接釋放到目標文件夾,如圖3-10所示。

如果把Command改為Command = " X ",再次運行上述程序,壓縮包中的文件夾和文件一律解壓到目標文件夾中,如圖3-11所示。

上面的實例把壓縮包中所有內容解壓到目標文件夾,使用以下代碼可以解壓壓縮包中指定路徑的文件,而不是解壓全部文件。

圖3-10 自動解壓

圖3-11 連文件夾一起解壓

3.1.5 刪除

WinRAR使用命令D刪除壓縮包中的文件或路徑。

下面的實例把package1.rar壓縮包中的“吉林”文件夾刪除。

運行上述程序,刪除壓縮包中的“吉林”文件夾,如圖3-12所示。

圖3-12 刪除壓縮包中指定的文件夾

3.1.6 使用通配符

無論是壓縮、解壓縮,還是刪除命令,路徑設置中均可使用通配符。*表示0個以上任意字符,?表示1個任意字符。

下面的程序把文件夾下所有4位擴展名的Word文檔添加到Word.rar壓縮包中。

運行上述程序,將文件夾中所有的Word文檔添加到壓縮包,如圖3-13所示。

圖3-13 批量壓縮特定類型的文件

下面的代碼從Word.rar壓縮包中刪除啟用宏的Word文檔(擴展名為.docm)。

需要注意的是,由于是從壓縮包里面刪除內容,所以代碼中Content的賦值不需要WorkDir。

運行上述程序,刪除壓縮包中擴展名為docm的文件,如圖3-14所示。

圖3-14 從壓縮包中刪除指定擴展名的文件

3.1.7 處理壓縮包的密碼

使用-p或-hp開關參數,可以壓縮為加密的文件,也可以從添加了密碼的壓縮包中解壓文件。-p后面帶上密碼,表示普通加密,手工雙擊壓縮包,會看到壓縮包中的文件列表,每個文件后面有*。

下面的程序把文件夾中所有擴展名為.pdf的文件添加到壓縮包,并且設置解壓密碼為ryueifu。

運行上述程序,然后打開壓縮包,會看到處于加密狀態,如圖3-15所示。

圖3-15 自動壓縮并設置解壓密碼

如果使用開關參數-hp,表示高度加密,這種方式生成的壓縮包,連其中的文件列表也看不到,如圖3-16所示。

對于設置了密碼的壓縮包,可以在解壓命令中把密碼傳遞進去。

下面的程序把剛剛加密生成的Lock.rar解壓到test文件夾中。

圖3-16 使用-hp參數高度加密

3.1.8 使用WinRAR修改Office文檔

Office 2007以上版本的Office文檔(.docx、.xlsx、.pptx等格式)其實是一種壓縮包格式,使用WinRAR可以直接打開。下面介紹一下用WinRAR查看和修改Excel文件的方法。

實例文件“example01.xlsx”有3個工作表,表名從左到右依次分別為Jan、Feb、Mar,如圖3-17所示。

圖3-17 Excel工作簿文件

在Excel中關閉該文件,然后打開WinRAR軟件,按下快捷鍵【Ctrl+O】,瀏覽到example01.xlsx,如圖3-18所示。

圖3-18 使用WinRAR打開Excel文件

在WinRAR中看到Excel文件由3個文件夾和一個文件構成,繼續展開名為xl的文件夾,可以看到和工作表信息有關的內容,如圖3-19所示。

圖3-19 查看Excel文件的內容

手工把example01.xlsx解壓到磁盤下,生成了一些擴展名為.xml的文件。雙擊Workbook.xml,會在IE瀏覽器中打開該文件,如圖3-20所示。

其中<Sheets>這個節點中存儲的就是各個工作表的名稱和順序。

xml文件可以用記事本程序編輯,因此接下來用記事本程序打開Workbook.xml文件,把Jan這個工作表移動到最后,并且把Feb這個表的名稱修改為“二月”。修改好后,在IE中再次預覽,如圖3-21所示。

圖3-20 查看Excel文件內部的部署清單

圖3-21 調整工作表的XML代碼

然后把修改了的Workbook.xml文件壓入example01.xlsx工作簿中,在Excel中再次打開,看到工作表的名稱和次序發生了變化,如圖3-22所示。

圖3-22 修改后Excel文件的內容

可以看到Jan工作表移到了最后,Feb工作表被重命名。

Word、PowerPoint文檔也是壓縮文件,可以用WinRAR查看和打開。以上演示的是手工使用WinRAR查看、修改Office文檔,當然也可以用Shell調用WinRAR進行自動解壓。

下面的過程把example01.xlsx文件中的Workbook.xml部分解壓到Destination文件夾中。

如果是帶有自定義功能區的文檔,用壓縮包打開后,里面有更多的內容,這些在稍后的章節講解。

以上內容的源代碼文件為“實例文檔10.xlsm”。

主站蜘蛛池模板: 萍乡市| 芦溪县| 广河县| 三门县| 濮阳市| 中阳县| 石渠县| 高雄市| 亳州市| 定边县| 延津县| 三穗县| 鸡东县| 新建县| 忻城县| 连山| 广德县| 阳东县| 剑川县| 广河县| 疏附县| 柳河县| 夏津县| 曲周县| 密山市| 金坛市| 和顺县| 密山市| 连南| 尼玛县| 敖汉旗| 仁寿县| 辉县市| 新野县| 城市| 临桂县| 揭阳市| 辉县市| 乾安县| 涡阳县| 怀柔区|