お仕事で毎週、週報を書いているが、これはテキストファイルで書いて添付で送る習慣になっている。
このファイル名が定形で決まってて、第何週ってわかるようになってるのね。
でもこれ、毎週毎週、「えーと今週は7月第3週だから……」ってマニュアルでやってるのが美しくない。ファイル名くらい勝手に決めて、前回の結果からコピーしたいよね?
そんなわけで、即興でこれをでっちあげた。
#!/usr/bin/ruby -Ku require 'fileutils' def addzero(d) r = d.to_s if d < 10 r = "0#{r}" end r end def get_oldmonth(year,month,n) r = nil while r == nil n = n - 1 if n < 1 n = 6 month -= 1 if month < 1 month = 12 year -= 1 break if year < 2009 end end fn = "週報#{year}年#{addzero(month)}月第#{n}週.txt"; if File.exist?(fn) == true r = fn.clone break end end r end # Time.now.strftime("%m/%d %a") now = Time.now year = now.strftime("%Y").to_i month = now.strftime("%m").to_i day = now.strftime("%d").to_i yobi = now.strftime("%a").clone snow = Time.local(year,month,1,0,0,0,0) n = 0 (1..day).each{|i| if Time.local(year,month,i,0,0,0,0).strftime("%a") == yobi n += 1 end } print "今週は、#{month}月第#{n}週です。\n" newfn = "週報#{year}年#{addzero(month)}月第#{n}週.txt"; oldfn = get_oldmonth(year,month,n) if oldfn != nil && File.exist?(newfn) == false p newfn,oldfn FileUtils.copy(oldfn,newfn) end
これのキモは
・「今週が第何週かを調べる」
・「前回の報告書を探してきて最新の名前でコピーする」
なのだ。
中身を書くのはもちろん、手動で XD お仕事だからね。