您的位置:首页 > 其它

一种将压缩包中与另外一个目录中相同的文件提取出来的方法

2010-05-01 17:09 330 查看
1 概述

1.1 问题的提出

不知道您在开发中碰到过这种情况没:在其他公司提供的平台上做二次开发,但对方每次源码一有更新,都不是以patch包的形式给出,而是将整个工程打包过来,搞得大家每次都得加班来合代码。

这种情况大家都怎么处理呢?我最早是这么做的:

Ø 将我们做了修改的n个文件,从对方的压缩包中解压出来(记得 仍然保持这些文件的源码树结构,而不是将他们解压到同一个目录中)。假设解压到 new_version 目录中,记得将此目录做个备份 new_version_bak;

Ø 用 Beyond Compare (或其他对比软件)将 new_version 与旧软件版本 做对比来合代码;

Ø 合代码后,将 new_version 打包,发给其他开发人员,则对方只需解压该压缩包到源码树的根目录下就ok了,而不需要将这n个文件一个个做替换。如果项目采用cvs的话,也可以讲这个压缩包解压到cvs的根目录下。

这三个步骤中,后两个步骤或许用机器 合软件 大家不放心,但第一个步骤纯粹是重复工作,修改的文件一多,工作量将相当可怕,最好是能交给计算机做。这个工作概括起来就是:

前提:新版本压缩包 new_version.rar、旧版本中与对方提供的原始平台不同的文件以原先源码树的方式统一存放到 old_version 目录下;

需求:将 new_version.rar 中与 old_version 目录下相同的文件提取出来,存放到 new_version 下。

1.2 解决思路

根据上面的需求,我们需要这么几个步骤:

Ø 将 old_version 中的文件以绝对路径的方式列在一张表上,这个工作太适合让perl这种文本处理语言了;

Ø 让 winrar 根据这张表解压对应文件,这也可以采用 winrar x new_version.rar @new_version.lst ;

2 工具的使用

为了完成上面的工作,我用perl语言和make写了个工具包,下面讨论下其用法。

2.1 工具包含的文件

该工具包需要用到 make、perl 等工具,包含的文件如下:

机器上还必须有安装 perl 程序。

Toolkit

├:make 工具

│ ├libiconv2.dll

│ ├libintl3.dll

│ └make.exe

├:patch 工具

│ ├make.bat

│ ├Makefile

│ └开发工具_patch工具的使用.doc:本文档

└: perl 脚本,下面列出这些perl脚本的功能

├ls_dir.pl:以绝对路径列出指定目录下的文件和目录,类似于linux下的 ls 命令

├mk_dir.pl:新建目录

├replace_str.pl:以正则表达式的方式替换字符

├rm_dir.pl:删除目录

└rm_file.pl:删除文件

2.2 执行步骤

真正的步骤只有两步:

Ø make clean :清除patch/build 目录;

Ø make :生成欲修改文件列表以及new_version 目录,它们均位于patch/build 下。

但在执行这两步之前,我们必须先配置 make.bat 和 Makefile 两个文件。

2.3 配置工作

2.3.1 make.bat
E:/Tech/Document/Tools/Toolkit/Make/make -r -R MAKESHELL=CMD %*

请将 E:/Tech/Document/Tools/Toolkit/Make/make 修改为您PC上make工具存放地址。

2.3.2 Makefile
该文件一般有这么几个地方要改:

PERL_DIR = E:/Tech/Document/Tools/Toolkit/Perl # 蓝色字体修改为上述perl脚本所在目录

RAR_BIN = D:/Program Files/WinRAR/rar.exe # 蓝色字体修改为winrar程序所在目录

PREV_VER_DIR = E:/Tech/Project/ Bak/old_version_bak # 蓝色字体修改为old_version 的绝对路径

RAR_FILE = E:/Tech/Project/new_version.rar # 蓝色字体修改为new_version.rar的绝对路径

STR_DST = new_version # 蓝色字体修改为压缩包里面的第一级目录名

3 附录

3.1 Perl 语言

有兴趣的话,可以参考《Perl语言入门》。

3.2 关于winrar

大家都习惯于winrar压缩软件的图形界面操作,很多人都不知道它还有个 命令行模式(或称dos版吧)Rar.exe。下面列出patch工具用到的几条rar命令:

常规的命令行语法描述如下:

WinRAR <命令> -<开关1> -<开关N> <压缩文件 > <文件...> <@列表文件...> <解压路径/>

添加压缩文件命令—a

rar a test.rar 1.txt :添加 1.txt 到压缩包 test.rar中,若无test.rar,则新建它;

添加压缩文件命令—a

rar a test.rar 1.txt :添加 1.txt 到压缩包 test.rar中,若无test.rar,则新建它;

添加压缩注释—c

rar c –z2.txt test.rar :将 2.txt 作为 test.rar的注释;

rar –z2.txt a test.rar 1.txt :上面两步的集合;

解压命令—x

rar x test.rar 1.txt :将1.txt从test中解压出来;

将test.lst文件从test.rar中解压出来—@test.lst

rar x test.rar @test.lst:

关于 winrar 软件的其他方面可参考该软件目录下的 WinRAR.chm,winrar软件的命令和开关不区分大小写。

4 联系方式

希望这份文档对您有所帮助,若您发现任何问题或有任何更好的建议,欢迎与我联系!

温陵布衣:

MSN: sikinzen@hotmail.com

Mail: sikinzen @yahoo.com.cn

QQ: 526679213

 

 

注:工具包请到我的共享下载:http://sikinzen.download.csdn.net/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐