Чтение и запись текстового файла при выполнении условия - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть текстовый файл Sample.txt, в котором содержатся тысячи записей.Увидеть ниже.Я создал vbscript, который принимает поле ввода для записи отсечки.В этом примере я ввел 10005 в качестве записи обрезки.Затем сценарий прочитает все записи после обрезанной записи, в данном случае начиная с 10006 до 10010, а затем запишет в новый текстовый файл с текущей датой в качестве имени файла, например 20180920.txt

10000
10001
10002
10003
10004
10005
10006
10007
10008
10009
10010

Ожидаемый результат:

10006
10007
10008
10009
10010

Пример сценария, но не завершена запись нового файла.

Dim Lastrecord
Dim IsFound, IsFound2
Dim CurrentDate
Const ForReading = 1
Set wShell = CreateObject("WScript.Shell")
Set oExec = wShell.Exec("mshta.exe ""about:<input type=file id=FILE><script>FILE.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>""")
sFileSelected = oExec.StdOut.ReadLine

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(sFileSelected)
Set objFile1 = objFSO.OpenTextFile(objFSO.GetAbsolutePathName(objFile), ForReading)

CurrentDate = Replace(Date, "/", "")
Lastrecord = InputBox("Last Last Record:")
IsFound = 0
IsFound1 = 0

Do Until objFile1.AtEndOfStream
    strLine = objFile1.ReadLine
    If Trim(strLine) = Trim(LastRecord) Then
        IsFound = 1
        Exit Do
    End If
Loop

objFile1.Close

WScript.Echo strLine
WScript.Echo Trim(Lastrecord)

------------------ Я выполнил сценарий, см. Ниже кредит @Ansgar Wiechers.

Dim Lastrecord
Dim IsFound, IsFound2
Dim CurrentDate
Const ForReading = 1
Set wShell=CreateObject("WScript.Shell")
Set oExec=wShell.Exec("mshta.exe ""about:<input type=file id=FILE><script>FILE.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>""")
sFileSelected = oExec.StdOut.ReadLine
CurrentDate = Year(NOW) & Right("00" & Month(NOW), 2) & Right("00" & Day(NOW), 2) & Right("00" & Hour(NOW), 2) & Right("00" & Minute(NOW), 2) & Right("00" & Second(NOW), 2)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(sFileSelected)
Set objFile1 = objFSO.OpenTextFile(objFSO.GetAbsolutePathName(objFile), ForReading)

    Lastrecord = InputBox("Last Last Record:")
    IsFound = False
    Set outFile = objFSO.CreateTextFile(objFSO.GetParentFolderName(objFile) & "\" & CurrentDate & ".DAT", True)
    Do Until objFile1.AtEndOfStream
        strLine = objFile1.ReadLine
        If IsFound Then outFile.WriteLine strLine
        If Trim(strLine) = Trim(LastRecord) Then IsFound = True
    Loop
        Wscript.Echo "New file created successfully at: " & objFSO.GetParentFolderName(objFile) & "\" & CurrentDate & ".DAT"
    outFile.Close
objFile1.Close

1 Ответ

0 голосов
/ 20 сентября 2018

Вместо выхода из цикла запишите strLine в выходной файл после того, как была найдена строка среза.

IsFound = False
Set outFile = objFSO.OpenTextFile("C:\output.txt", 2)
Do Until objFile1.AtEndOfStream
    strLine = objFile1.ReadLine
    If IsFound Then outFile.WriteLine strLine
    If Trim(strLine) = Trim(LastRecord) Then IsFound = True
Loop
outFile.Close
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...