masalibの日記

システム開発、運用と猫の写真ブログです

dosで行頭にファイル名と行数してファイル結合する

エラーチェック運用で秀丸grepで検索した結果をログ収集していた
毎回,grepのコマンドを叩くがめんどくさくなった

運用をかえればいいのですが
後続の処理影響するのがさらにめんどくさいので
秀丸grep結果とほぼ同じフォーマットを出力するbatで作った

下記は検索して出力するコマンドのfindstrを利用しています

findstr /N /R /D:C:\targetFolder  "." *170907.log > C:\output\170907.log

170907の部分は自動で昨日の日付をいれる必要があったので
昨日の日付をvbsで取得してセットした

SET YYMMDD=%DATE:~-10%
ECHO WScript.Echo  Mid(Replace( DateAdd(Wscript.Arguments(0), Wscript.Arguments(1), Wscript.Arguments(2)) , "/" , "") , 3 )>DateAdd.vbs
FOR /F %%A IN ('cscript //Nologo DateAdd.vbs d -1 %YYMMDD%') DO SET YYMMDD=%%A
findstr /N /R /D:C:\targetFolder  "." *%YYMMDD%.log > C:\output\%YYMMDD%.log

補足
Replaceしているのは2017/09/07 → 20170907形式に変更している
Midしているのは20170907 → 170907形式に変更している
vbsにはformat関数がないに等しい

なお、vbsをつかわずに昨日を取得できるけど、行数が長くなったのでやめた
http://wiki.altium.com/pages/viewpage.action?pageId=25952928

[改訂新版]Windowsコマンドプロンプトポケットリファレンス

[改訂新版]Windowsコマンドプロンプトポケットリファレンス