作者angel212310 (小康)
看板Programming
标题Re: [请益] C++以程式码自动制做压缩档
时间Wed May 2 21:31:32 2012
※ 引述《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
1F:→ 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)
2F:推 rockdown:连范例都附上了...太谢谢您了! 140.118.197.51 05/02 21:49
3F:→ rockdown:我想请一杯阿水做为谢礼 站内信与您连络! 140.118.197.51 05/02 21:50
4F:推 EdisonX:补一下,header应该是string,不是cstring. 180.177.76.161 05/02 23:01
5F:→ rockdown:请问一下产生出来的压缩档怎麽是空的? 140.118.197.51 05/04 01:32
6F:→ rockdown:我试过直接开小黑窗打指令 可以包成功 140.118.197.51 05/04 02:29
7F:→ rockdown:但是用程式呼叫就只会产生一个空的压缩档 140.118.197.51 05/04 02:30
8F:→ rockdown:试了好几次 终於成功了... 140.118.197.51 05/04 02:47
9F:→ rockdown:可是 我只是换另一个资料夹压缩而已阿... 140.118.197.51 05/04 02:48
10F:推 RichieRich:WINAPI 有现成的.cab lib 218.167.137.14 05/04 23:14
11F:→ angel212310:我刚刚试了一下,OK耶~140.118.105.207 05/04 23:24
12F:→ angel212310:记得windows路径的 "\" 都要用 "\\"140.118.105.207 05/04 23:25
忘了加 std 这个 namespace ........ Orz
※ 编辑: angel212310 来自: 140.118.105.207 (05/04 23:28)