Richo スキャナで読み込んだファイル名を Dropbox style にする

Dropbox の日付表示が一番分かりやすいと思う。

年 年年年-月月-日日 時痔.分分.秒秒 なんだけど。

「.」を区切り表示で使うので昔のDOSとかは受け付けないど、今日日 unix から windows まで問題なく使える文字コードだ。

それに対して Richo のスキャン機能のファイル名ときたら

20210521154427606.pdf

年月日で始まってるのは分かるけど、こんなのがずらーっと並ぶと気持ち悪い。

T:\123>dir /B
20180618155926848.pdf
20180618160324618.pdf
20180618160404492.pdf
20180618160537197.pdf
20180618160633584.pdf
20180618160658873.pdf
20180618160726635.pdf
20180618160759978.pdf
20180618160832361.pdf
20180618160856234.pdf
20180618160920348.pdf
20180618160954779.pdf
20180618161049756.pdf
20180618161124348.pdf
20180618161137877.pdf
20180618161208000.pdf
20180618161238306.pdf
20180618161309568.pdf
20180618161851605.pdf
20180618161929225.pdf
20180618162017850.pdf
20180618162044237.pdf
20180618162105531.pdf
20180618162147524.pdf
20180618162203739.pdf
20180618162231843.pdf
20180618162301395.pdf
20180618162322184.pdf
20180618162355280.pdf
20180618162428134.pdf
20180618162453013.pdf
20180618162706581.pdf
20180618162732837.pdf
20180618162801696.pdf
20180618162819322.pdf
20180618162842798.pdf
20180618162907326.pdf
20180830085000106.pdf
20181210084800540.pdf
20190131083550094.pdf
20190131132238417.pdf
20190131132253710.pdf
20190131134932777.pdf
20190424164158299.pdf
20190604113143875.pdf

T:\123>

そんなファイル名を纏めて選択して右クリック – 送る – RenameRicho2DorpboxStyle とすると

T:\123>dir /B
2018-06-18 15.59.26 848.pdf
2018-06-18 16.03.24 618.pdf
2018-06-18 16.04.04 492.pdf
2018-06-18 16.05.37 197.pdf
2018-06-18 16.06.33 584.pdf
2018-06-18 16.06.58 873.pdf
2018-06-18 16.07.26 635.pdf
2018-06-18 16.07.59 978.pdf
2018-06-18 16.08.32 361.pdf
2018-06-18 16.08.56 234.pdf
2018-06-18 16.09.20 348.pdf
2018-06-18 16.09.54 779.pdf
2018-06-18 16.10.49 756.pdf
2018-06-18 16.11.24 348.pdf
2018-06-18 16.11.37 877.pdf
2018-06-18 16.12.08 000.pdf
2018-06-18 16.12.38 306.pdf
2018-06-18 16.13.09 568.pdf
2018-06-18 16.18.51 605.pdf
2018-06-18 16.19.29 225.pdf
2018-06-18 16.20.17 850.pdf
2018-06-18 16.20.44 237.pdf
2018-06-18 16.21.05 531.pdf
2018-06-18 16.21.47 524.pdf
2018-06-18 16.22.03 739.pdf
2018-06-18 16.22.31 843.pdf
2018-06-18 16.23.01 395.pdf
2018-06-18 16.23.22 184.pdf
2018-06-18 16.23.55 280.pdf
2018-06-18 16.24.28 134.pdf
2018-06-18 16.24.53 013.pdf
2018-06-18 16.27.06 581.pdf
2018-06-18 16.27.32 837.pdf
2018-06-18 16.28.01 696.pdf
2018-06-18 16.28.19 322.pdf
2018-06-18 16.28.42 798.pdf
2018-06-18 16.29.07 326.pdf
2018-08-30 08.50.00 106.pdf
2018-12-10 08.48.00 540.pdf
2019-01-31 08.35.50 094.pdf
2019-01-31 13.22.38 417.pdf
2019-01-31 13.22.53 710.pdf
2019-01-31 13.49.32 777.pdf
2019-04-24 16.41.58 299.pdf
2019-06-04 11.31.43 875.pdf

T:\123>

こうしよう。

Win + R で shell:sendto として送るフォルダを開ける。

そこに書きバッチファイルを仕込む。

RenameRicho2DorpboxStyle.bat

@echo off
setlocal EnableDelayedExpansion


:loop
if "%~1"=="" goto eof

set targetfilename=%~n1

if "%~x1" equ ".pdf" (

ren "%~1" "%targetfilename:~0,4%-%targetfilename:~4,2%-%targetfilename:~6,2% %targetfilename:~8,2%.%targetfilename:~10,2%.%targetfilename:~12,2% %targetfilename:~14%.pdf"

if not "!ERRORLEVEL!"  == "0" (


    PAUSE

    rem EXIT

)

)

shift
goto loop


goto eof
rem debug
@echo off

echo %targetfilename%
echo %targetfilename:~0,4% year
echo %targetfilename:~4,2% month
echo %targetfilename:~6,2% day
echo %targetfilename:~8,2% hours
echo %targetfilename:~10,2% minutes
echo %targetfilename:~12,2% second
echo %targetfilename:~14% others

echo arg1: %1
echo arg~1: %~1
echo arg~f1: %~f1
echo arg~d1: %~d1
echo arg~p1: %~p1
echo arg~n1: %~n1
echo arg~x1: %~x1
echo arg~a1: %~a1
echo arg~t1: %~t1
echo arg~z1: %~z1


:eof

これで実現可能。但しむやみに使われないように、.pdf のファイルしか対象にしない。

2022-10-18 ちょっと変更した。

Acrobat Reader で開いているのを忘れてこのスクリプト実行したら、ファイル名の変換に失敗した。そりゃそうだ。

失敗したときは、DOS窓を開きっぱなしにして、pauseで止めるようにした。

IF の多重化しているせいで、rename の終了コードが上手く取得できないので、setlocal EnableDelayedExpansion しているが、あんまり使いたくないな。

これからのこと

ファイル名の長さから判別したり、.tif や .jpg も対象にすべきだった。そこは反省しているが、またの機会にしよう。