【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