Скрипт пишет новую строку рядом с первой строкой, а не является последней строкой в ​​текстовом формате - PullRequest
0 голосов
/ 19 июня 2019

Мой скрипт имеет итерацию.В первом случае он читает txt, берет первую строку и после выполнения некоторых действий (создания новой строки) записывает эту строку во временный файл, а после удаления исходного txt сохраняет временный файл с тем же именем, что иисходный текст.

На второй итерации он берет созданный текст и пытается написать новую строку в конце файла.Проблема в том, что теперь код записывает новую строку рядом с первой строкой, а не записывает ее в последней строке.

Пример:

Ожидаемый результат: 004; J2Yf; 18090023; 20200725; 00000509990; VOLVO; D; YFWfS9Z9lu06JM0Rk; D; FA; 18090023 004; J2Yf; 18090023; 20200725; 00000509990; VOLVO; D; YFW23000909009 Неверный результат: 004; J2Yf; 18090023; 20200725; 00000509990; VOLVO; D; YFWfS9Z9lu06JM0Rk; D; FA; 18090023 004; J2Yf; 18090023; 20200725; 000009;YFWfS9Z9lu06ftR78; D; FA; 18090023

Как писать в последней строке?

TIA;)

For Iterator 1 to 2
    sF1 = "C:\Users\ig.ext\Desktop\Automation\Archivo.txt"
    '#Opening file  
    Dim objFS 
    Dim objFile
    strTemp = "C:\Users\" & Environment("UserName") & "\Desktop\Automation\Temp.txt"
    Set objFS = CreateObject("Scripting.FileSystemObject")

    If Iterator = 1 Then

        Set objFile = objFS.OpenTextFile(sF1)
        content = objFile.ReadLine

        '#Creating temporal file
        Set objOutFile = objFS.CreateTextFile(strTemp,True)
    Else 
        Set objFile = objFS.OpenTextFile(sF1, 8)        

    End If

    sResultado = "004;J2Yf;18090023;20200725;00000509990;VOLVO;D;YFWfS9Z9lu06ftR78;D;FA;18090023"

    If Iterator = 1 Then

        '#Write and close
        objOutFile.Write(sResultado)

        objOutFile.Close
        objFile.Close
        objFS.DeleteFile(sF1)
        objFS.MoveFile strTemp,sF1
    else

        '#Write line and close
        objFile.Writeline(sResultado)
        objFile.Close
    End If

Next

1 Ответ

2 голосов
/ 20 июня 2019

Как @ Герт Беллекенс прокомментировал:

Используйте WriteLine () вместо Write () в первой итерации, чтобы добавить новую строку перед записью второй строки.

(ответ добавлен как вики сообщества )

...