ログのお掃除バッチ

TeraTerm で自動取得したログを、定期的に掃除したい。
TeraTerm マクロ側を改造するのがてっとり早いんだけど、今回は事情があってスルーしたい。
ログの命名規則は、YYYYMMDD-HHMMSS_HOST.log と、単純。
これの日付部分を抜き出して、そのフォルダ名でフォルダを掘って移動する…と。


最初は単純に for 文で回して、変数から抜き出せばいいや〜なんて思ってたんだけど…
バッチファイルで定義される for 文の変数ってば、シェルスクリプトのように変数を再利用できなかった。


どうすれば使えるんだ〜?
ってことで、いろいろググった。
http://d.hatena.ne.jp/jak-san/20110210/1297356724
http://d.hatena.ne.jp/jak-san/20110709/1310168663
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1128288736


ぐぬぬ



最終的に Call で変数を再利用。

@echo off
set pLOGFILE=
set pFILELIST=dir.txt

rem ### File-list create
dir /b *.log > %pFILELIST%

rem ### Move command create
for /f "tokens=*" %%a in (%pFILELIST%) do call :line "%%a"
goto :end

:line
set pLOGFILE=%1
set pDIR=%pLOGFILE:~1,8%
:end

rem ### Exec move...
if not exist %pDIR% mkdir %pDIR%
if exist %pLOGFILE% move  %pLOGFILE% %pDIR%

exit


とりあえず、このやり方であれば、YYYY/MM/DD/HH/MM/SS までフォルダの階層を作れそう。