• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBS ファイルマージ処理)

VBScriptファイルマージ処理-複数ファイルをマージする方法

このQ&Aのポイント
  • 特定のDir内にある複数のファイルのレコードをマージするVBScriptの実装方法を教えてください。
  • File名の受け渡し方法やマージの効率的な方法についてもアドバイスを求めています。
  • Dir内のファイル名を取得して一時ファイルに書き出し、それを読み込んでマージファイルを作成する予定です。しかし、具体的な実装方法がわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
noname#219128
noname#219128
回答No.3

やさしく説明するよりもソースとコメントの方が分かりやすいと思うので。 Option Explicit '対象フォルダ Const TRAGET_FOLDER = "C:\temp\temp" '集計ファイルパス Const OUTPUT_PATH = "C:\temp\sum.txt" 'FileSystemObject Dim objFso '対象ディレクトリ Dim objFolder '対象ファイル Dim objFile '対象ファイルテキストストリーム Dim objTS '出力先ファイルオブジェクト Dim objOutFile 'カウンタ Dim i 'FileSystemObject生成 Set objFso = CreateObject("Scripting.FileSystemObject") '対象ディレクトリを取得 Set objFolder = objFSO.GetFolder(TRAGET_FOLDER) '出力先ファイルを開く Set objOutFile = objFso.CreateTextFile(OUTPUT_PATH) '対象ディレクトリにあるファイル分繰り返し処理 For Each objFile In objFolder.Files 'ファイルを開く Set objTS = objFile.OpenAsTextStream(1, -2) '5行スキップ For i = 1 To 5 'ファイル末尾判別 If Not objTS.AtEndOfStream Then objTS.SkipLine End If Next 'ファイル末尾まで書き出し Do While objTS.AtEndOfStream <> True objOutFile.writeLine(objTS.readLine) Loop 'ファイルを閉じる objTS.Close 'オブジェクトの解放 Set objTS = Nothing Next '出力ファイルを閉じる objOutFile.Close '後処理 Set objOutFile = Nothing Set objFso = Nothing

fwiv3867
質問者

お礼

まずは、御礼を述べさせて頂きます。 「大変有難うございます。」 そのまま、答えを頂いたのですが答えにたどり着く公式を 未だに調べている状態にあります。 作る人が作るとこんなにスッキリ無駄がないものだと関心 致しました。 今後、人の作ったものなど参考に、自分でも作成できる様 努力致します。

すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#219128
noname#219128
回答No.2

事務職で初心者であるならば無理にプログラミングを行わなくてもフリーソフトを使用してみてはいかがでしょうか? たとえばこんなのとか http://www.vector.co.jp/soft/winnt/util/se319087.html

参考URL:
http://www.vector.co.jp/vpack/filearea/win/util/text/
fwiv3867
質問者

補足

記述はしておりませんでしたが、マージ前に、各Fileヘッダー部分 のレコード、5行をスキップする為、VBSにて勉強がてら作成を試み ました。何が何でもVBSと言う訳では有りませんが・・・無理ですかね。

すると、全ての回答が全文表示されます。
  • acuraEX
  • ベストアンサー率12% (2/16)
回答No.1

もう少し詳しく説明していただいたほうがいいですね。 少しポイントがわかりにくいかと思います。 マージ処理にも色々とありますし、マージの部分を聞いているのか、 アルゴリズム部分を聞いているのか、 変数の受け渡しの部分を聞いているのかがわかりにくいですね。 (プログラム歴とかも教えていただくと、スキルの近い人から上位の方が答えてくれるかと思います。) この質問ですと、上級者の方の質問なのか、初心者の方の質問なのかで捕らえ方がかなり違ってしまいます。

fwiv3867
質問者

補足

当方事務職・初心者です、説明もうまく出来ずご迷惑お掛け致します 現在、日々行っている作業を、特定の日時にPCに行わせたいと考え・・・ 現在手作業にて行う作業は ・Dir「C:\temp\temp」には、1日1個のFileが格納されます。(自動) ・Fileは「yyyymmddxxxx.txt」の名前で作成されます。(自動)  同じ名前は存在しません。 ・月に1度、Dir「C:\temp\temp」に作成されたFileをテキスト  エディタにて開き、全てのFileのレコードをCopy and Pasteの  繰り返しにてマージFileにまとめます。(月1手動) アルゴリズムを問われてもよくわかりませんので、変数の受け渡し を教えて頂けませんか。 前問い合わせにて (1)にてDirに格納されたFlle名は解かりました。 (2)にてFileがなくなるまで処理を続けようと思います。  さらにDoを中に入れ、今度はレコードが無くなるまで読込み  マージFileへ書き出したいと思いましたが。 その際、File受け渡し方がよく解かりません。 objFile1 = objFso.GetAbsolutepathname("temp_temp.txt") Set objin = objFso.OpenTextFile("temp_ini.txt",1) Do Until objin.atendofstream = True linedata = objin.readline() ++++++++++++++++++++++++++ Do xxxx.atendofstream   ↑読込むFileを受け渡すには? loop ++++++++++++++++++++++++++ loop そもそもマージ処理をVBSにて行う場合、このような作りに なるのか疑問ですが、どなたかご教授願えませんでしょうか。

すると、全ての回答が全文表示されます。

関連するQ&A