Hallo,
ichl habe hier zwar ein sehr einfaches Standardproblemm, aber ich sehe den Fehler einfach nicht. Vielleicht liegts es auch daran, dass VB nicht gerade meine Heimatsprache ist.
Ich habe mehrere *.dat Dateien bei denen ich die ersten 23 Zeilen jeweils löschen möchte. Dies versuche ich mit folgendem VB Script:
' Delete First n Lines of a Text File
Const FOR_READING = 1
Const FOR_WRITING = 2
Anz_Probanden = 1 'Wscript.Arguments(0)
strFileName = "1_0.dat"
counter_stelle_1_datei = 1
counter_stelle_2_datei = 0
iNumberOfLinesToDelete = 23
Set objFS = CreateObject("Scripting.FileSystemObject")
Do While counter_stelle_1_datei Do While counter_stelle_2_datei strFileName = counter_stelle_1_datei & "_" & counter_stelle_2_datei & ".dat"
Set objTS = objFS.OpenTextFile(strFileName, FOR_READING)
strContents = objTS.ReadAll
objTS.Close
arrLines = Split(strContents, vbNewLine)
Set objTS = objFS.OpenTextFile(strFileName, FOR_WRITING)
For i=0 To UBound(arrLines)
If i > (iNumberOfLinesToDelete - 1) Then
objTS.WriteLine arrLines(i)
End If
Next
objTS.Close
counter_stelle_2_datei = counter_stelle_2_datei + 1
Loop
counter_stelle_1_datei = counter_stelle_1_datei + 1
Loop
Das Skript ist dem von http://www.microsoft.com/technet/scriptcenter/scripts/misc/text/default.mspx?mfr=true angelehnt.
So weit so einfach, sollte gehen - blöd ist nur, dass meine *.dat Dateien am Ende 0 Byte lang sind.
Was übersehe ich da?
Vielen Dank schonmal
uscos
Programmieren - alles kontrollieren 4.938 Themen, 20.667 Beiträge
Vorweg: Also ich bin auch kein VBS-Experte ;-)
Ich würde aber mal prüfen welche Zeilenumbrüche Du in den Eingabedaten hast und ob die zur Def von vbNewLine (wird wahrscheinlich die Windows-Zeilenumbrüche nutzen) abgedeckt werden.
Abgesehen davon: Wirklich schön ist der Code nicht. Aber das muß man hier auch MS anlasten, daß die solche unnötig komplizierten Verrenkungen machen.
Warum nicht z.B. einfach
oder noch eleganter: Array-Operationen (keine Ahnung ob VBS solche Features kennt) anwenden und dann einfach in die Datei ausgeben ;-)
Gruß
Borlander