【前提】需要ruby运行环境。
【用途】压缩指定文件目录为指定名称的压缩文件,并可排除不要的文件或目录。
【用法】
- 新建一个名称为Rakefile的文件把以下内容加入到此文件中。
- 使用文本编辑工具打开Rakefile文件,修改task :zip里的compress函数。然后保存
- 在命令行下,执行命令: rake
task :default => [:zip]
task :zip do
# 修改compress函数调用,此例为:
# 待压缩目录:../my-res
# 压缩为:assets/res.zip
# 排除文件或目录:readme.txt .git
# 排除后缀文件或目录:.db .DS_Store __MACOSX
# compress('../my-res','assets/res.zip', %w{readme.txt .git}, %w{.db .DS_Store __MACOSX})
#
end
def compress(path, archive = nil, excludes = [], suffixes= [])
gem 'rubyzip'
require 'zip/zip'
require 'zip/zipfilesystem'
path.sub!(%r[/$],'')
archive = File.join(path,File.basename(path))+'.zip' if archive.nil?
FileUtils.rm archive, :force=>true
excludes = excludes.collect {|x| path + '/' + x }
Zip::ZipFile.open(archive, 'w') do |zipfile|
Dir["#{path}/**/**"].reject{|f| f==archive || suffixes.any? {|s|f.end_with?(s)} || excludes.any? {|r|f.index(r)==0} }.each do |file|
#print file,"\n"
zipfile.add(file.sub(path+'/',''),file)
end
end
end
【参考】:本文参考自以下链接,功能有所增强。
http://grosser.it/2009/02/04/compressing-a-folder-to-a-zip-archive-with-ruby/