概要
Amazonの領収書(pdf)に一括で日付をつけたい瞬間はありませんか? 私はあったのでドラッグドロップで日付追加をできるようにしました。
コード
下記を.batで保存してドラッグドロップすると、ファイル名の先頭に現在日付で「yyyy-MM-dd_」を追加してくれます。
@echo off REM 現在日付の取得 for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a" set "YY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%" set "newdate=%YY%-%MM%-%DD%" REM 日付を出力 echo %newdate% for %%f in (%*) do ( REM ドラッグドロップされたファイルをリネーム rename "%%~nxf" "%newdate%_%%~nxf" )
ファイル作成日か更新日のいずれか古い方を行頭に追加したい場合
下記はドラッグドロップされたそれぞれのファイルに対して「yyyyMMdd_元のファイル名」の形式でリネームします。
金額だけ手動で入れてファイル保存部分だけでも電子帳簿保存法に対応できないかなと思い作成しました。
参考:【電子帳簿保存法】手間とお金をかけずに対応する方法を税理士がわかりやすく解説!
REM @echo off setlocal enabledelayedexpansion for %%f in (%*) do ( REM ファイル名の引用符を正しく処理 set "filename=%%~f" REM ファイルの作成日時をyyyyMMdd形式で取得 for /f "tokens=2 delims==" %%a in ('wmic datafile where "name='!filename:\=\\!'" get CreationDate /value') do ( if not "%%a"=="" set "createDate=%%a" ) set "createDate=!createDate:~0,8!" REM ファイルの更新日時をyyyyMMdd形式で取得 set "UPDATE=%%~tf" set "YYYYMMDD=!UPDATE:~0,4!!UPDATE:~5,2!!UPDATE:~8,2!" set "modifyDate=!YYYYMMDD!" REM 作成日時と更新日時を比較して古い方を選択 if !createDate! lss !modifyDate! ( set "usedate=!createDate!" ) else ( set "usedate=!modifyDate!" ) REM 日付を出力 echo 作成日時: !createDate!, 更新日時: !modifyDate!, 使用する日付: !usedate! REM ファイル名の先頭に日付を追加してリネーム set "newname=!usedate!_%%~nxf" rename "!filename!" "!newname!" ) endlocal
おわり。