IISのhttpログを解析する

IISのログから、特定のページへのアクセス日時とアクセス元IPアドレスを調査する。IISの吐くhttpログは項目がスペース区切りであるため、EXCELに読み込んだり、DBに取り込むのが若干めんどくさい。
また、現状日別にファイルが作成されているので、まとめようとおもう。
よって、

  1. ログファイルからページ名を含む行を抽出
  2. 私が使用しているPCのIPアドレスを除外
  3. アクセス日、アクセス時、IPアドレスをタブ区切りで出力

するバッチを作成した。

@echo off
set iislog=E:\IISLog\W3SVC558834065\*
set exceptIP=192.168.1.100
set tsvfile=drip.tsv
set dripname=anlz

type  %iislog% | findstr %dripname% | findstr /v %exceptIP% > result.txt
echo. > %tsvfile%
for /F "tokens=1-10 delims= " %%a in ( result.txt ) do echo %%a	%%b	%%j >> %tsvfile%
@echo on

IISログはE:\IISLog\W3SVC558834065というディレクトリに作成している。

  1. このディレクトリ内すべてのファイルから(type %iislog%)
  2. 特定のページ名を含む行を抽出し(| findstr %dripname%)
  3. そこから自PCのIPアドレスを含む行を除外(| findstr /v %exceptIP%)
  4. 一旦ファイルに出力した(> result.txt)
  5. 出力したファイルから、スペース区切り(delims= )で、1項目目のアクセス日(%%a)、2項目目のアクセス時(%%b)、10項目目のIPアドレス(%%j)を取得
  6. TAB区切りでtsvファイルとして出力した( echo %%a %%b %%j >> %tsvfile%)。