2021年10月29日金曜日

いわゆる日報ファイルを自動生成するバッチファイル

定型的なOffice作業はどんどん自動化していきましょう。

今回作ったのは、いわゆる日報的なファイルの生成を自動化するスクリプト(バッチファイル)です。

こんなシーンを想定しています。

  • 同一フォルダ上に日次でファイルを作成する
  • 当日分のファイルは前日分のファイルをベースに更新する
  • ファイル名のプレフィックスに8桁数字(例:20211029)を付与する

ポイントは、前の日に作ったファイルをベースにするというところです。

コピー元のファイルを特定する方法としてファイル名で指定する方法もありますが、今回は更新日が最も新しいファイルを指定する方法としました。(for文とdirコマンドのオプションが勉強になりました)

targetdir変数で対象のフォルダパス、filepre変数でコピー先のファイル名を指定しております。また、copyコマンドでは拡張子を".txt"で特定しているため、任意の拡張子に変更してお使いください。

@echo off
rem 最新ファイルだけコピーする

set targetdir=hogehoge
set filepre=piyopiyo

set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
set filetail=%yyyy%%mm%%dd%

set filename=""
for /F "tokens=1 delims=" %%a in ('dir /b /O:D "%targetdir%"') do set filename=%%a

copy %filename% "%targetdir%%filepre%_%filetail%.txt"

あとは、このバッチファイルをどこかに保存しておき、タスクスケジューラに登録しておけば、自動的に当日のファイルが作成されます。

面倒な日報ファイル作成の手間が少しでも楽になりますね。