【VBS】複数ファイルのファイルのはじめと終わりの行を出力
スポンサーリンク
特定のディレクトリにある、全てのファイルの最初の行と、最後の行を取得し、コンマ区切りでファイル出力するスクリプト。
よく1行目に "start write log YYYY/MM/DD HH..."みたいになっていて、最後の行に "finish YYYY/MM/DD HH..."ってなっているものを、ひと通り一発で見たいときなど使って下さい。
個人的にはSAPでExport/Importのパッケージごとのログファイルから、それぞれの処理の開始、終了時間を出して、パッケージ順序の最適化をするために使っています。Time analyzer使えば一発ですが,たまにちゃんと動かないことがあるもんでつくってみた。需要ないけど。
Option Explicit
Dim objFileSys
Dim strTargetPath
Dim objFolder
Dim objItem
Dim objResultFile
Set objFileSys = CreateObject("Scripting.FileSystemObject")
'このディレクトリにある全てのファイルを対象とする
strTargetPath = "C:\test"
Set objFolder = objFileSys.GetFolder(strTargetPath)
'取得結果を、result.txtに出力する
Set objResultFile = objFileSys.OpenTextFile("result.txt", 2, True)
For Each objItem In objFolder.Files
Dim strOpenFile
Dim objTextStream
Dim strText
Dim last_line
Dim start_line
Dim count
Dim last_DayTime,start_DayTime
Dim last_Time,start_Time,last_Day,start_Day
count = 0
strOpenFile = strTargetPath & "\" & objItem.Name
Set objTextStream = objFileSys.OpenTextFile(strOpenFile, 1)
Do While objTextStream.AtEndOfStream <> True
'最初の行を取得
If count = 0 then
start_line = objTextStream.ReadLine
End if
'最後の行を取得(実質は1行ずつ取得し変数に入れる)
last_line = objTextStream.ReadLine
count = count + 1
Loop
strText = objItem.Name & "," & start_line & "," & last_line
objResultFile.WriteLine(strText)
objTextStream.Close
Set objTextStream = Nothing
Next
Wscript.echo "処理が終了しました"
' ------------- ファイル書き込み -------
objResultFile.Close
Set objFolder = Nothing
Set objFileSys = Nothing