Re: [請益] C++以程式碼自動製做壓縮檔

看板Programming作者 (小康)時間12年前 (2012/05/02 21:31), 編輯推噓3(309)
留言12則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《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

05/02 21:37, , 1F
7zip cmd
05/02 21:37, 1F
http://www.dotnetperls.com/7-zip-examples ※ 編輯: angel212310 來自: 140.118.105.207 (05/02 21:40)

05/02 21:49, , 2F
連範例都附上了...太謝謝您了!
05/02 21:49, 2F

05/02 21:50, , 3F
我想請一杯阿水做為謝禮 站內信與您連絡!
05/02 21:50, 3F

05/02 23:01, , 4F
補一下,header應該是string,不是cstring.
05/02 23:01, 4F

05/04 01:32, , 5F
請問一下產生出來的壓縮檔怎麼是空的?
05/04 01:32, 5F

05/04 02:29, , 6F
我試過直接開小黑窗打指令 可以包成功
05/04 02:29, 6F

05/04 02:30, , 7F
但是用程式呼叫就只會產生一個空的壓縮檔
05/04 02:30, 7F

05/04 02:47, , 8F
試了好幾次 終於成功了...
05/04 02:47, 8F

05/04 02:48, , 9F
可是 我只是換另一個資料夾壓縮而已阿...
05/04 02:48, 9F

05/04 23:14, , 10F
WINAPI 有現成的.cab lib
05/04 23:14, 10F

05/04 23:24, , 11F
我剛剛試了一下,OK耶~
05/04 23:24, 11F

05/04 23:25, , 12F
記得windows路徑的 "\" 都要用 "\\"
05/04 23:25, 12F
忘了加 std 這個 namespace ........ Orz ※ 編輯: angel212310 來自: 140.118.105.207 (05/04 23:28)
文章代碼(AID): #1FeJSvay (Programming)
文章代碼(AID): #1FeJSvay (Programming)