0

次のような入力ファイルがあります。

**********************************************************
* NAME           : CONTROLLER                                                          
* FUNCTION       : NOTHING IMPORTANT                                           
* BEGIN DATE     : 31/07/13                               
* TIME BEGIN     : 23.39.17.75                            
**********************************************************
* DATA INPUT READ  : 000000540                            
**********************************************************
* NAME           : CONTROLLER                                                          
* FUNCTION       : NOTHING IMPORTANT                                           
* BEGIN DATE     : 28/04/13                               
* TIME BEGIN     : 22.19.35.22                            
**********************************************************
* DATA INPUT READ  : 000008940                            
**********************************************************

日付、時刻、データを取得して、次のようにフォーマットされた別の出力ファイルに移動します。

31/07/13  23.39.17.75  000000540
28/04/13  22.19.35.22  000008940

今のところ私は試しました:編集済み

Const ForReading = 1
Const ForWriting = 2
Dim objFSO 'File System Object
Set objFSO = CreateObject("Scripting.FileSystemObject")

Dim objInputTS 'Text Stream Object
Set objInputTS = objFSO.OpenTextFile("D:\Desktop\input.txt", ForReading, False)
Dim objOutputTS 'Text Stream Object
Set objOutputTS = objFSO.OpenTextFile("D:\Desktop\output.txt", ForWriting, True)



 Do Until objInputTS.AtEndOfStream
    Dim strLine
    strLine = objInputTS.ReadLine()

    c1 = "* BEGIN DATE"
    'WScript.Echo Len(c1)
    c2 = "* BEGIN DATE"
    'WScript.Echo Len(c2)
    c3 = "* DATA INPUT READ"
    'WScript.Echo Len(c3)

    If (Instr(strLine, 13) = "BEGIN DATE") Then objOutputTS.WriteLine(Mid(strLine, 20))

    If (Instr(strLine, 13) = "TIME BEGIN") Then objOutputTS.WriteLine(Mid(strLine, 20))

    If (Instr(strLine, 18) = "DATA INPUT READ") Then objOutputTS.WriteLine(Mid(strLine, 22)) 
Loop

objOutputTS.Close()
objInputTS.Close()

しかし、私の output.txt ファイルには何も表示されません。問題があると思いますが、*わかりません。私はあらゆる方法で試しました。抜け道が見つからない。私のコードで何が間違っていますか?

4

2 に答える 2

1

置き換えてみてください:

If (Left(strLine, 12) = "* BEGIN DATE ") ...

If Instr(strLine, "BEGIN DATE") then
   strLineSplit = Split(strLine, ":")
   objOutputTS.WriteLine(Trim(strLineSplit(1)))
end if

またはこの趣旨の何か。

編集:

ループ内:

Dim beginDate, endDate, dataInputRead 

strLine = objInputTS.ReadLine()

If Instr(strLine, "BEGIN DATE") then
    strLineSplit = Split(strLine, ":")
    beginDate = Trim(strLineSplit(1))
end if

If Instr(strLine, "END DATE") then
    strLineSplit = Split(strLine, ":")
    endDate = Trim(strLineSplit(1))
end if

If Instr(strLine, "DATA INPUT READ") then
    strLineSplit = Split(strLine, ":")
    dataInputRead = Trim(strLineSplit(1))
    objOutputTS.WriteLine(beginDate & " " & endDate & " " & dataInputRead & Chr(13) & Chr(10))
end if
于 2013-09-24T10:04:47.057 に答える