看板 Programming 關於我們 聯絡資訊
※ 引述《rockdown (寂滅冷鋒)》之銘言: : 如題,我是用C++語法在撰寫程式 : 最近需要利用程式碼將指定的資料夾包成壓縮檔 : 請問有這樣的函式可供呼叫嗎 system()是一個函式,他被包在stdlib.h裡, 你可以用他去執行作業系統上的指令, 不過在呼叫system之前你要先把要你執行的指令用字串存起來, 例如: string cmd = "mkdir new_folder"; system(cmd.c_str()); 這兩行會在執行檔所在目錄底下創一個叫new_folder的空白資料夾 然後壓縮程式的話,我只用過7zip 因為winRAR是要錢的,雖然有測試版跟謎版..............嗯 在寫程式之前: 1. 去下載 7-Zip Command Line Version:http://www.7-zip.org/download.html 2. 解壓縮到某個地方,例如C:\7zCMD\ 然後, #include<cstdlib> #include<string> using namespace std; int main(int argc, char* argv) { string zipCmd = "C:\\7zCMD\\7za.exe a -t7z"; /*!^ 7za.exe 是7zip的命令列程式(Cmd Line Tool) a 跟 -t7z 是 7za.exe 的Cmd Line Argument, a 是跟7za.exe說你現在要建立一個壓縮檔 -t7z是跟7za.exe說你現在要建立壓縮檔類型為7z */ string spacing = " "; /*! 假設現在要壓縮一個叫Test的資料夾在D:\\ */ string target = "D:\\Test"; /*! 壓縮好後放到叫Test.7z的壓縮檔也在在D:\\ */ string resultZip = "D:\\Test.7z"; //將命令串起來 zipCmd += spacing; zipCmd += resultZip; zipCmd += spacing; zipCmd += target; /*! 補,完整密命令大概長這樣: C:\\7zCMD\\7za.exe a -t7z D:\\Test.7z D:\\Test */ system(zipCmd.c_str()); return 0; } 大概是這樣~ 你試試吧 我沒有compile............. 應該沒錯,很久沒寫了.......... system()詳細說明在這: http://www.cplusplus.com/reference/clibrary/cstdlib/system/ -- It's not who I am underneath but what I do that defines me. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.105.207
angel212310:7zip cmd140.118.105.207 05/02 21:37
http://www.dotnetperls.com/7-zip-examples ※ 編輯: angel212310 來自: 140.118.105.207 (05/02 21:40)
rockdown:連範例都附上了...太謝謝您了! 140.118.197.51 05/02 21:49
rockdown:我想請一杯阿水做為謝禮 站內信與您連絡! 140.118.197.51 05/02 21:50
EdisonX:補一下,header應該是string,不是cstring. 180.177.76.161 05/02 23:01
rockdown:請問一下產生出來的壓縮檔怎麼是空的? 140.118.197.51 05/04 01:32
rockdown:我試過直接開小黑窗打指令 可以包成功 140.118.197.51 05/04 02:29
rockdown:但是用程式呼叫就只會產生一個空的壓縮檔 140.118.197.51 05/04 02:30
rockdown:試了好幾次 終於成功了... 140.118.197.51 05/04 02:47
rockdown:可是 我只是換另一個資料夾壓縮而已阿... 140.118.197.51 05/04 02:48
RichieRich:WINAPI 有現成的.cab lib 218.167.137.14 05/04 23:14
angel212310:我剛剛試了一下,OK耶~140.118.105.207 05/04 23:24
angel212310:記得windows路徑的 "\" 都要用 "\\"140.118.105.207 05/04 23:25
忘了加 std 這個 namespace ........ Orz ※ 編輯: angel212310 來自: 140.118.105.207 (05/04 23:28)