csv per vbs splitten, dann letzte Zeile löschen
Moin, ich bin der Neue 
Und gleich mal mit einer Frage nerven *g*
Arbeite mich gerade in vbs ein.
Ich muss eine csv splitten, in 10000 Zeilen aufgeteilt.
Das klappt auch soweit ganz gut mit dem was ich mir hier im Forum schon zusammengesucht habe.
Haken an der Geschichte: Die gesplitteten Dateien enthalten am Ende immer eine Leerzeile und ich hab bisher keinen Weg gefunden das zu unterbinden.
Wenn ich MaxLine auf 9999 setzte dann hab ich zwar die maximalen 10000 Zeilen, aber trotzdem am Ende eine Leerzeile.
MaxLine auf 10000 bringt mir Dateien mit 10001 Zeilen und halt wieder mit der Leerzeile am Ende :/
Any solutions for me?
Hier mal das was ich mir bisher zusammengeschustert habe:
Oder muss ich die Ausgabedatei noch einmal komplett in eine neue schreiben halt bis auf die letzte Zeile?
[Edit Biber] In -Tags gesetzt. [/Edit]
Und gleich mal mit einer Frage nerven *g*
Arbeite mich gerade in vbs ein.
Ich muss eine csv splitten, in 10000 Zeilen aufgeteilt.
Das klappt auch soweit ganz gut mit dem was ich mir hier im Forum schon zusammengesucht habe.
Haken an der Geschichte: Die gesplitteten Dateien enthalten am Ende immer eine Leerzeile und ich hab bisher keinen Weg gefunden das zu unterbinden.
Wenn ich MaxLine auf 9999 setzte dann hab ich zwar die maximalen 10000 Zeilen, aber trotzdem am Ende eine Leerzeile.
MaxLine auf 10000 bringt mir Dateien mit 10001 Zeilen und halt wieder mit der Leerzeile am Ende :/
Any solutions for me?
Hier mal das was ich mir bisher zusammengeschustert habe:
'SplitTextFile.vbs
sInFile = WScript.Arguments(0)
If WScript.Arguments.Count < 2 Then
lMaxLine = 10000
Else
lMaxLine = CLng(WScript.Arguments(1))
End If
Set fso = Wscript.CreateObject("Scripting.FileSystemObject")
sPath = fso.GetFile(sInFile).Path
sPath = Left(sPath, InstrRev(sPath, "\") - 1)
sOutName = sPath & "\" & fso.GetBaseName(sInFile) & "_"
If InstrRev(sInFile, ".") Then
sOutType = Mid(sInFile, InstrRev(sInFile, "."))
End If
lLineNr=0
iFileNr=101
Set oOut = fso.OpenTextFile(sOutName & Mid(CStr(iFileNr),2) & sOutType, 2, True)
Set oIn = fso.OpenTextFile(sInFile, 1)
Do While Not oIn.AtEndOfStream
oOut.WriteLine oIn.ReadLine
lLineNr = lLineNr + 1
If lLineNr >= lMaxLine Then
lLineNr = 0
oOut.Close
iFileNr = iFileNr + 1
Set oOut = fso.OpenTextFile(sOutName & Mid(CStr(iFileNr),2) & sOutType, 2, True)
End If
Loop
oIn.Close
oOut.Close
WScript.Echo "Erledigt :)"
[Edit Biber] In -Tags gesetzt. [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 82053
Url: https://administrator.de/forum/csv-per-vbs-splitten-dann-letzte-zeile-loeschen-82053.html
Ausgedruckt am: 20.05.2025 um 18:05 Uhr
4 Kommentare
Neuester Kommentar
Hallo Havanna und willkommen im Forum!
Versuch es vielleicht so:
Grüße
bastla
P.S.: Wir hätten hier auch -Tags ...
Versuch es vielleicht so:
...
Do While Not oIn.AtEndOfStream
oOut.Write oIn.ReadLine 'Zeile ohne Zeilenschaltung schreiben
lLineNr = lLineNr + 1
If lLineNr >= lMaxLine Then
lLineNr = 0
oOut.Close
iFileNr = iFileNr + 1
Set oOut = fso.OpenTextFile(sOutName & Mid(CStr(iFileNr),2) & sOutType, 2, True)
Else 'noch nicht letzte Zeile, daher Zeilenschaltung anhängen
oOut.Write vbCrLF
End If
Loop
oIn.Close
oOut.Close
WScript.Echo "Erledigt ;-)"
Grüße
bastla
P.S.: Wir hätten hier auch -Tags ...
Hallo Havanna!
Grüße
bastla
In der letzten Datei die geschrieben wird ist trotzdem noch am Ende eine Leerzeile.
Stimmt leider - dann versuchen wir's eben ersatzweise so:...
Else 'noch nicht letzte Zeile, daher Zeilenschaltung anhängen
If Not oIn.AtEndOfStream Then oOut.Write vbCrLF 'falls nicht schon letzte Zeile
End If
...
Grüße
bastla