フォルダを同名の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