2010-12-05 46 views
0

en essayant de comprendre comment modifier le code ci-dessous pour ajouter à un fichier texte qui se trouve avoir un CRLF supplémentaire à la fin du fichier. Je reçois des résultats confus en fonction de l'endroit où j'ai mis le CHR (10). Des idées comment dépouiller le CRLF ou supprimer la ligne vide? Je dois finir avec aucun CRLF supplémentaire! Ce script ajoutera des lignes au fichier RandomCSV s'il ne fait pas partie d'un multiple de 20. 'Si le fichier est déjà une multiple de 20, rien ne devrait arriver.VBS ajouter des lignes au fichier texte sans espaces

dim filesys, readfile, contents, lines, remainder, LinesToAdd, StaticLine, Appendfile, Count 
dim field1, field2, field3, field4  
set filesys = CreateObject("Scripting.FileSystemObject") 
Set readfile = filesys.OpenTextFile("C:\RandomCSV.txt", 1, false) 
contents = readfile.ReadAll 
Lines = readfile.line 
readfile.close 
    MsgBox "The file contains this many lines " & Lines 
remainder = lines mod 20 
LinesToAdd = (20 - remainder) 
    MsgBox "Adding this many lines " & LinesToAdd 
If LinesToAdd <> 20 then 
    Set Appendfile = filesys.OpenTextFile("C:\RandomCSV.txt", 8, false) 
For Count = 1 to LinesToAdd 
    Appendfile.write Chr(34) & "Field1" & Chr(34) & Chr(44) & Chr(34) & "Field2" & Chr(34) & Chr(44) & Chr(34) & "Field3" & Chr(34) & Chr(44) & Chr(34) & "Field4" & Chr(10) 
Next 
appendfile.close 
End If 
+0

devoirs? il y a une étiquette pour ça! – Cheeso

+1

Je suppose que vous pourriez l'appeler devoirs. Le client s'attend à ce qu'il fonctionne mardi! – Dorkygrin

Répondre

0

Voici ce que j'ai fini par faire pour se débarrasser du CRLF à la fin du fichier. Semble fonctionner correctement:
'=======================
' Débarrassez-vous de la ligne vide à la fin du fichier Dim StrEnd

Const ForReading = 1 « Const ForWriting = 2

Set objFSO = CreateObject ("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile ("C: \ RandomCSV.txt", ForReading) strFichier = objFichier.ReadAll objFichierFermer

intLength = Len (strFichier) StrEnd = droit (strFile, 2)

Si StrEnd = vbCrLf Alors
strFile = Gauche (strFile, intLength - 2)
Set objFile = objFSO.OpenTextFile ("C: randomCSV.txt", ForWriting)
objFile.Write strFile
objFile.Close
End If
strFile = ""