フォルダを同名のzipファイルに圧縮するスクリプト。
Rox-Filerの右クリックメニューから呼び出して使うことを想定している。
もっと良いやり方が絶対あると思う。
ツッコミどころはいろいろあるが、メモ代わりに載せておく。
#!/usr/bin/ruby # # ディレクトリをリカーシブに圧縮するスクリプト # 圧縮先と同名のファイルが既に存在する場合は処理を停止する # # 使用法: # zip_compress target [zipfile] # # target: 圧縮したいディレクトリ # zipfile: 圧縮先ファイル名(省略時は target.zip) # $prompt = false #false のときはユーザーに確認しない def ask_user(message) if $prompt print message; "y" == gets.chop else true end end def compress(target, zipfile) command = "zip -r #{zipfile} #{target}" if ask_user("\'#{target}\' を \'#{zipfile}\.zip\'に圧縮しますか(yes/no)\? ") unless File.exist?(zipfile + '.zip') puts " " + command system command else puts 'Error: ' + zipfile + '.zip' + 'が存在します!' exit 1 end end end def execute(target, zipfile) if File.directory?(target) path, dir = File.split(target) Dir.chdir(path) { compress(dir, zipfile) } else puts "Error: ディレクトリを指定して下さい" end end case ARGV.size when 2 execute(ARGV.shift, ARGV.shift) when 1 target = ARGV.shift dir, zipfile = File.split(target) execute(target, zipfile) else puts 'Error: 引数の数は1個または2個です!' puts 'Usage: zip_compress targetdir [zipfile]' exit 1 end