• 締切済み

VBでログファイルを結合したい

質問させてください。 以下のようなc:\test配下にあるログファイルを一つに結合したいと考えております。 以後もファイルが増え続けるため、どのようなファイルの状況でもc:\test以下のファイルはすべて結合したいのですがどなたかスクリプトを知っていらっしゃる方がいらっしゃいましたら教えていただけないでしょうか。 c:\test\20060801\test.log c:\test\20060801\test2.log c:\test\20060801\test3.log c:\test\20060802\test.log c:\test\20060803\test2.log c:\test\20060804\test3.log 以上、大変お手数ですが宜しくお願い致します。

みんなの回答

  • Hardking
  • ベストアンサー率45% (73/160)
回答No.3

結合ファイルの対象を制御したいのであれば ANo.2のmFile.Name(参照ファイル名)を条件判定すればいいです。 例えば、ログファイルだけを結合対象にしたいならば mFile.Name(参照ファイル名)の拡張子が'log'のみ とすればいいですよ。 IF Right(mFile.Name,3) = "log" THEN '結合処理をする End IF

  • Hardking
  • ベストアンサー率45% (73/160)
回答No.2

C:\TEST直下の全ファイルを1つの結合ファイルにする サンプルをVBScriptで作成しました。 下記内容のスクリプトを実行すれば、C:\TEST直下に結合ファイル join.txtが作成されます。 Dim fso, baseFolder, logFolders Dim frFile,toFile,objLog Dim myFolder,mFile Dim strLine Set fso = CreateObject("Scripting.FileSystemObject") Set baseFolder = fso.GetFolder("C:\TEST") Set logFolders = baseFolder.SubFolders Set toFile = fso.OpenTextFile("C:\TEST\join.txt", 2, True) For Each objLog In logFolders Set myFolder = fso.GetFolder("C:\TEST\" & objLog.Name) For Each mFile In myFolder.Files Set frFile = fso.OpenTextFile("C:\TEST\" & objLog.Name & "\" & mFile.Name, 1) Do While frFile.AtEndOfStream <> True strLine = frFile.ReadLine() toFile.Write strLine & vbCrLf Loop frFile.Close Set frFile = nothing Next Next toFile.Close

mattu123
質問者

お礼

お忙しい中ありがとうございます。 早速動作を確認いたしました。 追加でご相談させていただきたいことがあるのですが c:\test以下のファイルの中にログファイル以外のファイルも格納されていたため、 あるファイル(c:\readme.txt)はファイル結合しないようにしたいのですが 大変申し訳ないのですがVBscriptの設定方法をしっていらっしゃいましたら教えていただけないでしょうか。 大変申し訳ございません。 宜しくお願い致します。

  • MASA_H
  • ベストアンサー率42% (64/151)
回答No.1

すべてプレーンテキストと仮定していいの? VisualBasic、VBScriptどっち? アーカイバでまとめちゃだめなの? 結合順序に縛りはあるの? etc... わからないことだらけです。もう少し条件を絞り込まないとだめかと。

関連するQ&A