ファイル半自動生成をしてみよう。

つまりところ、ちょっと雑用的なもので「ほにゃらら-0221.拡張子」ってファイルをまず作り、作ったファイルで作業しておわりに集計みたいな作業があるのですね。不定期にやってくるのが特徴で、やる時は必ず前回のファイルを複写、日付だけを変更します。

こんなルーチンワークなら、半自動でやってみましょうというのがお題。いかにもRubyな雑品ですな。

下部のリストは、以下の機能だけを持っています。

最悪でもツキイチくらいは作業があるので、60なんて値はいらないんですが、まぁ安全パイですね。

また、これは保存ファイル名に規則性がある事が前提になっていますが、 「日付だけは正しいがファイル名は間違っている事がある」 とか、 「全角だったり半角だったりする」 とか、そういう個別の条件にあわせてカスタマイズするのも楽しそうですね。

#!/usr/bin/ruby -Ku
require 'date'
require 'fileutils'

f = '作業ファイル(編集用)'
d = Date.today.strftime("%m%d")
ex = ".xls"
ff = f + "-" + d + ex

def gos(f,d,ex)
  f + "-" + d + ex
end

def _search(f,d,ex)
  ff = gos(f,d,ex)
  File.exists?(ff)
end

if _search(f,d,ex)
  print "存在します。\n"
  exit
else
  print "存在しません。古いものを探します。\n"
  (1..60).each {|i|
    dd = Date.today - i
    ddd = dd.strftime("%m%d")
    if _search(f,ddd,ex)
      print "存在しました。#{f}-#{ddd}#{ex}\n"
      xff = gos(f,ddd,ex)
      FileUtils.cp xff,gos(f,d,ex)
      print "複写で作成しました。#{f}-#{d}#{ex}\n"
      break
    end
  }
end