新・パソコン奮戦記(3) 「作者名」等を挿入する

今回は柿木ファイルに詰将棋情報を入力するスクリプトを書きます。

workフォルダの中身は今回は次のようにしました。

前回で「詰み」を挿入したファイルを更に加工しますので、newフォルダを図巧1フォルダに名前を変えました。さらに結果を保存するために新たにnewフォルダを作成してあります。

いまの段階でこのファイルを開くと次のような画面になります。

右上の情報窓には何も表示されていません。
作者名もわかりません。
この作品の情報はわずかに左上のファイル名のみです。
これでは困ります。

この棋譜ファイルはどのような状況か確認するために、001.kifをエディタで開いてみます。

それでは詰将棋情報を入力すると棋譜ファイルはどのように変化するか調べてみましょう。

このように入力すると、情報窓は次のように変わります。

棋譜ファイルを開いてみましょう。

作者:伊藤看寿
発表年月:1755
出典:図巧 第1番

この3行を冒頭に入れれば良いようです。

ところが実験してみたところ、冒頭でなくても問題なく動くことが確認できました。
ファイルの最後に入れても大丈夫のようです。
それでしたら、手数も追記することができそうです。

それではスクリプトを書いてみましょう。

workフォルダに新しくテキストファイルを作成してファイル名を script02.awk に変更します。

エディタで開いて、次のように入力してください。

BEGIN{
  SAKUSYA="伊藤看寿"
  YMD=1755
  MEDIA="将棋図巧"
  TYTLE=0
  TESUU=0
}

/ --- 柿木将棋/{
  Ofilename=FILENAME
  gsub("図巧1","new",Ofilename)
  TYTLE=FILENAME
  gsub("図巧1/","",TYTLE)
  gsub(".kif","",TYTLE)
  TYTLE=sprintf("第%d番",TYTLE)
}

/詰み/ {
  TESUU=$1
  print > Ofilename
  printf("作品名:%s\n",TYTLE) > Ofilename
  printf("作者:%s\n",SAKUSYA) > Ofilename
  printf("発表誌:%s\n",MEDIA) > Ofilename
  printf("発表年月:%s\n",YMD) > Ofilename
  printf("出典:将棋図巧%s\n",TYTLE) > Ofilename
  printf("手数:%d\n",TESUU-1) > Ofilename
  next
}

{
  print > Ofilename
}

少しだけスクリプトの解説をしましょう。

AWKのスクリプトは /パターン/{アクション}の羅列です。
入力されたファイルを冒頭から読んでいって、/パターン/に一致した行があったら{アクション}を実行します。

BEGINは最初に一度だけ一致するパターンです。
ここで変数にいろいろセットしています。
本来は直接print文に書けば良いものばかりですが、今後のことを考えてこの形で書きました。

9~16行はファイルの先頭の/柿木将棋/の行に反応する内容です。
前回と同じで出力ファイル名をセットし、さらにファイル名から第何番かをとりこんでいます。

18~28行はファイルの終わりから2行目の/詰み/に反応するアクションです。
ここで詰将棋情報を書込んでいます。

さてcmdを起動してまずは1ファイルだけ試してみましょう。

gawk -f script02.awk 図巧1/001.kif

と入力します。

newフォルダに001.kifができました。
開いてみると……

上手くいっているようです。

エディタで開いてみると

こんな変なところに詰将棋情報が出力されていますが、ちゃんと動いています。
気持ち悪かったら、柿木将棋で【上書き保存】を実行すると……

ちゃんと先頭に移動して保存されます。
あとでまとめて実行しましょう。

さて、残りのファイルも処理しましょう。

gawk -f script02.awk 図巧1/*.kif

これでOKです。

さて最後にまとめて上書き保存を実行します。

柿木将棋を立ち上げて、【ツール】→【棋譜情報の一括設定】→【参照】でworkのnewフォルダを指定します。

棋譜ファイルを書き換える、棋譜情報を書き換えるにチェックを入れるのを忘れないでください。

これを実行すれば、どの棋譜ファイルも詰将棋情報が先頭に移動したまっとうなファイルになります。

これでマイナビの『将棋図巧』特典ファイルはTUME-Baseにも登録できるファイルになりました。いくつかの作品には通称名が付いていますが、これは個別に入力することになります。(そのうち、この問題も考えてみます)

本日はここまで!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください