2016-05-03 13 views
1

私が持っているという名前のこのテキストファイルつのテキストファイルから複数のテキストファイルを作成するとき、見出しパターンを含める方法

W1M0130 
03/12/2012 00:00 SS_001 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_002 15 14 149 64 0 0 0 1 
03/12/2012 00:00 SS_003 4 3 233 100 0 0 0 1 
03/12/2012 00:00 SS_004 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_005 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_006 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_007 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_008 0 0 0 0 0 0 0 0 
$END 
W1M0200 
03/12/2012 00:30 SS_001 0 0 0 0 0 0 0 0 
03/12/2012 00:30 SS_002 12 11 136 58 0 0 0 1 
03/12/2012 00:30 SS_003 3 2 213 91 0 0 0 1 
03/12/2012 00:30 SS_004 0 0 0 0 0 0 0 0 
03/12/2012 00:30 SS_005 0 0 0 0 0 0 0 0 
03/12/2012 00:30 SS_006 0 0 0 0 0 0 0 0 
03/12/2012 00:30 SS_007 0 0 0 0 0 0 0 0 
03/12/2012 00:30 SS_008 0 0 0 0 0 0 0 0 
$END 
W1M0230 
... 

そして、ここで私は、この単一のテキストファイルを分割する方法についての私のコードですdata.txtを複数のテキストファイルに:出力の

textFile = "C:\data.txt" 
saveTo = "C:\" 
writeTo = "" 
headingPattern = "(W[0-9][A-Z][0-9]*)" 

dim fso,fileFrom,regex 
set fso = CreateObject("Scripting.FileSystemObject") 
set fileFrom = fso.OpenTextFile(textFile) 
set regex = new RegExp 

with regex 
    .Pattern = headingPattern 
    .IgnoreCase = false 
    .Global = True 
end with 

while fileFrom.AtEndOfStream <> true 
    line = fileFrom.ReadLine 
    set matches = regex.Execute(line) 

    if matches.Count > 0 then 
    writeTo = saveTo & matches(0).SubMatches(0) & ".txt" 
    set fileTo = fso.CreateTextFile(writeTo) 
    else 
    fileTo.WriteLine(line) 
    end if 
wend 

set fileFrom = nothing 
set fso = nothing 
set regex = nothing 

一つはW1M0130.txtであり、これは、出力テキスト・ファイルです:

03/12/2012 00:00 SS_001 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_002 15 14 149 64 0 0 0 1 
03/12/2012 00:00 SS_003 4 3 233 100 0 0 0 1 
03/12/2012 00:00 SS_004 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_005 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_006 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_007 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_008 0 0 0 0 0 0 0 0 
$END 

私は1つのテキストファイルを複数のテキストファイルに分割することができますが、例では見出しパターン行を含める方法に問題がありますW1M0130です。

期待される結果は次のようになります。

W1M0130 
03/12/2012 00:00 SS_001 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_002 15 14 149 64 0 0 0 1 
03/12/2012 00:00 SS_003 4 3 233 100 0 0 0 1 
03/12/2012 00:00 SS_004 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_005 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_006 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_007 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_008 0 0 0 0 0 0 0 0 
$END 

私はすでに時間インターネットを検索し、いくつか試行錯誤な方法を試してみましたが、それでも期待される結果を取得できませんでした。あなたの助けは非常に高く評価されます。ありがとうございました!

答えて

3

このような場合だけにfileTo.WriteLine(matches(0).SubMatches(0))を追加:あなたの出力がされます

if matches.Count > 0 then 
    writeTo = saveTo & matches(0).SubMatches(0) & ".txt" 
    set fileTo = fso.CreateTextFile(writeTo) 
    fileTo.WriteLine(matches(0).SubMatches(0)) 
else 
    fileTo.WriteLine(line) 
end if 

:[メモ帳W1M0130.txt]

W1M0130 
03/12/2012 00:00 SS_001 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_002 15 14 149 64 0 0 0 1 
03/12/2012 00:00 SS_003 4 3 233 100 0 0 0 1 
03/12/2012 00:00 SS_004 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_005 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_006 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_007 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_008 0 0 0 0 0 0 0 0 
$END 
+0

それは働きます! Aniさん、ありがとうございました! – Djamille

+0

おかげでそれは助けになりました:) –

関連する問題