2010年9月20日月曜日

はてなに追加 MyYahoo!に追加 Googleに追加 del.icio.usに追加 livedoorClipに追加 Buzzurlに追加 Macでrarからzipへの一発変換

ちょい苦労したのでメモメモ

圧縮ファイルrarをzipに一発で再圧縮しましょうってお話です。

もちろんMacにもrarを圧縮、解凍できるフリーソフトはあるのですが、

簡単にrarからzipに再圧縮するフリーソフトが見つからなかったので。
もし、あったら教えてください。

で、今回使用するのは

Automator
Mac標準ユーティリティ(アプリケーション→ユーティリティの中に入ってるロボットみたいなアイコンのヤツ)

RAR
コマンドライン上からrarを圧縮、解凍するやつ

やり方
ここからRAR 3.93 for Mac OS X(verは現時点)をダウンロード、解凍

解凍されたファイル
rar
unrar
を適当なディレクトリにコピー(とりあえず、/usr/bin/以下に置く)
cd ~/Donwloads
cp ./rar/rar /usr/bin/
cp ./rar/unrar /usr/bin/

Automatorを起動
ワークフローのテンプレートは、サービスを選ぶ。
アクション→ライブラリ→ユーティリティから
シェルスクリプトを実行」を右側のワークスペースへドラックアンドドロップ

プルダウンで選択できるシェルは
/bin/sh
を選択

後は以下のシェルをコピペして別名で保存。(スペース修正済み)

#!/bin/sh                                                                                                                                                        
export PATH=/usr/bin:/usr/local/bin/:$PATH
cvt_file=''
while read path;do
    full_file_name=${path##*/}
    file_name_no_ext=${full_file_name%.*}
    dir_path=${path%/*}
    ext=${path##*.}
    if [ "x${ext}" = "xrar" ];then
        tmp_dir="${dir_path}/tmp-$$"
        mkdir -p "${tmp_dir}"
        cp "${path}" "${tmp_dir}"
        cd "${tmp_dir}"
        unrar x -inul "${tmp_dir}/${full_file_name}"
        rm "${tmp_dir}/${full_file_name}"
        zip -r "${file_name_no_ext}.zip" ./* > /dev/null 2>&1
        mv ./*.zip ../
        cd "${dir_path}"
        rm -rf "${tmp_dir}"
        cvt_file=${cvt_file}"${file_name_no_ext}.zip\n"
    fi
done

unrarとrarを/usr/bin/以外に保存した場合は

export PATHの部分を書き換えてください

そうすれば、変換したいファイルを選択して右クリックで下の方に先ほど保存した名前があるので選択すると、rar→zipに変換してくれるはずです。

一応、複数ファイルを選択しても、rar以外を選択しても動くようになってるはず。。

元のファイルのファイル名と、ディレクトリ構成を壊さないようにしてあるつもりです。。

別のやり方大募集w

  • 2010年10月14日追記
選択したファイルパスのディレクトリにスペースが入っていると正しく動かなかったので修正


1 件のコメント:

  1. http://katoiek.blog122.fc2.com/blog-entry-777.html
    すごく今更ですが、検索でお見かけしたので。。。
    今ではこんなツールがありました〜
    ドラッグ&ドロップで簡単にコンバートできます。
    時代ってすごいですねぇ。

    返信削除