由於7z.exe所在路徑,以及解壓目錄中可能包含中文特殊字符,導致解壓失敗,所以最好將各部分路徑使用雙引號包含起來。
如:CString str;
str.Format(L"\"%s\\7z.exe\" x \"%s\" -o\"%s\"", strAppPath, strZipPath, strDestDirPath);
1、.rar 有開源庫unrar,可以直接在代碼中解壓。
2、.zip 有開元庫zlib,可以直接在代碼中解壓
3、其他格式如tar、7z等,建議使用7zip命令行形式。
網上下載7zip安裝文件,然后使用7z.exe和7z.dll即可。速度非常快
命令參數如下:
現在大家都用WinRAR,不知道聽說過7zip的朋友多不多。7zip是一個開源的壓縮軟件,非常小巧,提供的功能和WinRAR差不多,但支持的格式 幾乎比后者多一倍。根據我的使用經驗,其7z壓縮格式的壓縮速度及壓縮比也領先於WinRAR(WinRAR亦可識別7z格式,故不必擔心兼容性問題)。 另一點重要的是,7z完全開源,包括壓縮算法,而且還可以方便地使用它提供的庫,在自己的程序中集成壓縮功能。
這次繼續研究常用工具的命令行用 法。7zip的核心程序是7z.exe,命令行格式為:7z <command> [<switches>...] <archive_name> [<file_names>...] [<@listfiles...>]。
command為操作指令,如下:
a 添加到壓縮文件
b 基准測試,測試7z當前性能
d 從壓縮文件中刪除
e 從壓縮文件中解壓縮,但不包含目錄結構(即所有各級文件都解壓到一個目錄里)
l 列出壓縮文件的內容
t 測試壓縮文件
u 更新文件到壓縮文件
x 從壓縮文件中解壓縮,包含目錄結構
可見,最常用的指令是a, l和x.
具體使用,舉幾個例子就明白了:
壓縮a.txt和b.txt到c.7z:
7z a c.7z a.txt b.txt (命令a后的第一個為目標壓縮文檔名,然后是文件列表)
壓縮a.txt和b.txt到D:\Program Files\c.7z:
7z a D:\"Program Files"\c.7z a.txt b.txt (目錄名包含空格,用引號)
列出c.7z的內容:
7z l c.7z
解壓縮c.7z到E:\Program Files:
7z x c.7z -oE:Program Files\c (-o表示輸出目錄,其與目錄路徑之間沒有空格)
如果文件夾 E:Program Files\c 不存在,會自動創建。
如果要生成zip壓縮包,可以直接將目標壓縮包名設為c.zip,則它會自動使用zip算法壓縮。
這次繼續研究常用工具的命令行用 法。7zip的核心程序是7z.exe,命令行格式為:7z <command> [<switches>...] <archive_name> [<file_names>...] [<@listfiles...>]。
command為操作指令,如下:
a 添加到壓縮文件
b 基准測試,測試7z當前性能
d 從壓縮文件中刪除
e 從壓縮文件中解壓縮,但不包含目錄結構(即所有各級文件都解壓到一個目錄里)
l 列出壓縮文件的內容
t 測試壓縮文件
u 更新文件到壓縮文件
x 從壓縮文件中解壓縮,包含目錄結構
可見,最常用的指令是a, l和x.
具體使用,舉幾個例子就明白了:
壓縮a.txt和b.txt到c.7z:
7z a c.7z a.txt b.txt (命令a后的第一個為目標壓縮文檔名,然后是文件列表)
壓縮a.txt和b.txt到D:\Program Files\c.7z:
7z a D:\"Program Files"\c.7z a.txt b.txt (目錄名包含空格,用引號)
列出c.7z的內容:
7z l c.7z
解壓縮c.7z到E:\Program Files:
7z x c.7z -oE:Program Files\c (-o表示輸出目錄,其與目錄路徑之間沒有空格)
如果文件夾 E:Program Files\c 不存在,會自動創建。
如果要生成zip壓縮包,可以直接將目標壓縮包名設為c.zip,則它會自動使用zip算法壓縮。