(Ruby)(Rubyで base64エンコード)

 自分用のメモです、
mhtについて調べている時に、
バイナリファイル や テキストファイルを base64に変換するものを
書いてみようと思い立ったので、いろいろ調べながら書いてみました。
Rubyスクリプトをパスの通ったところにおいて
同じフォルダに それを呼び出すための batファイルをおきます
そうすると 普通のコマンドのように 呼び出すことができるようになります。
ファイル名 : base64.rb文字コード は Shift-JIS で書いてます

#!ruby -Ks if ARGV[0].nil? puts('オプションが足りません : base64 <入力ファイル名>') exit(1) else if !File.file?(ARGV[0]) puts('ファイルが無いか、フォルダが指定されてます') exit(1) end end begin buf = '' File.open(ARGV[0],'rb'){|f|buf=f.read} print([buf].pack('m')) rescue puts('ファイル処理中に何らかのエラーが発生しました') exit(1) end
ファイル名 : base64.bat文字コード は Shift-JIS で書いてます

@echo off ruby スクリプトのパス>\base64.rb %1
エンコードした文字列は標準出力するので リダイレクトでファイルに保存できます

 逆にデコードする場合は
ファイル名 : unbase64.rb文字コード は Shift-JIS で書いてます

#!ruby -Ks if ARGV[1].nil? puts('オプションが足りません : unbase64 <入力ファイル名> <出力ファイル名>') exit(1) else if !File.file?(ARGV[0]) puts('ファイルが無いか、フォルダが指定されてます') exit(1) end end begin buf = '' File.open(ARGV[0],'r'){|f|buf=f.read} buf = buf.unpack('m')[0] File.open(ARGV[1],'wb'){|f|f.write(buf)} rescue puts('ファイル処理中に何らかのエラーが発生しました') exit(1) end
ファイル名 : unbase64.bat文字コード は Shift-JIS で書いてます

@echo off ruby スクリプトのパス>\unbase64.rb %1 %2
となります
こちらは出力ファイル名を指定します、出入力ファイル名の重複チェックはしてませんので注意してください