03. maj 2012 - 10:09Der er
8 kommentarer og 1 løsning
Tilføj tekst i ini-filer
Jeg har en mappestruktur (antallet varierer fra dag til dag) som denne: S:\DocPost\Mail\BATCH\kundenummer(9 cifre)\mailadr I hver af disse mapper er der en eller flere ini-fil(er), 6210_K_kundenummer_fakturanummer_dato_klokkeslæt.ini som indeholder en linie (altid linie 6): Subject=Faktura/kontoudtog for deres konto Alt tekst er autogenereret og jeg har ikke mulighed for at ændre i det.
eks: mappe\fil\linie: S:\DocPost\Mail\BATCH\000333333\dhjk@gmail.com 6210_K_000333333_4816225_03-05-2012_09_12_25.ini Subject=Faktura/kontoudtog for deres konto
S:\DocPost\Mail\BATCH\000006843\fiktiv@minmail.com 6210_K_000006843_4815220_03-05-2012_0 9_10_09.ini Subject=Faktura/kontoudtog for deres konto
Hvorledes får jeg tilføjet kundenummer og '-' til sidst i den oplyste linie så der kommer til at stå som i nedenstående eks., jeg kan sagtens leve med at de foran stillede nuller kommer med. Subject=Faktura/kontoudtog for deres konto 333333 - Subject=Faktura/kontoudtog for deres konto 6843 -
Det er ikke samme script, desværre. Mapper og filer dannes automatisk via ERP-systemet og det har jeg desværre ikke indflydese på. Hvorledes skal dine eks. skrive i scriptet hvis der nu er xx-antal mapper, jeg har ikke de store erfraringer med script-programmering.
Hvis du smider det ind i notepad og gemmer som .vbs - så skulle du gerne have et script her :)
Prøv evt. lige at vælge "HovedMappe" til at være et andet sted først, for lige at tjekke om det er sådan du vil have det.
Dim fso Set fso = WScript.CreateObject("Scripting.Filesystemobject") Const ForReading = 1, ForWriting = 2, ForAppending = 8
HovedMappe = "S:\DocPost\Mail\BATCH"
For Each Mappe in fso.GetFolder(HovedMappe).SubFolders Kundenr = Mappe.Name If IsNumeric(kundenr) Then Kundenr = CLng(Kundenr) End If For Each Fil In fso.GetFolder(Mappe.Path).Files If fso.GetExtensionName(Fil.Path) = "ini" Then Set rFil = fso.OpenTextFile(Fil.Path,1) BygStr = "" FirstLine = False Do until rFil.AtEndOfStream Readlinje = rFil.ReadLine If FirstLine = False Then If Left(Readlinje,7) = "Subject" Then BygStr = Readlinje & " " & Kundenr Else BygStr = Readlinje End If FirstLine = True Else If Left(Readlinje,7) = "Subject" Then BygStr = BygStr & vbCrLf & Readlinje & " " & Kundenr Else BygStr = BygStr & vbCrLf & Readlinje End If End If Loop rfil.Close
Set wFil = fso.OpenTextFile(Fil.Path,2) wFil.Write(BygStr) wFil.Close End If Next Next
For Each Mappe in fso.GetFolder(HovedMappe).SubFolders Kundenr = Mappe.Name If IsNumeric(kundenr) Then Kundenr = CLng(Kundenr) End If
For Each Mappe2 In fso.GetFolder(Mappe.Path).SubFolders For Each Fil In fso.GetFolder(Mappe2.Path).Files If fso.GetExtensionName(Fil.Path) = "ini" Then Set rFil = fso.OpenTextFile(Fil.Path,1) BygStr = "" FirstLine = False Do until rFil.AtEndOfStream Readlinje = rFil.ReadLine If FirstLine = False Then If Left(Readlinje,7) = "Subject" Then BygStr = Readlinje & " " & Kundenr Else BygStr = Readlinje End If FirstLine = True Else If Left(Readlinje,7) = "Subject" Then BygStr = BygStr & vbCrLf & Readlinje & " " & Kundenr Else BygStr = BygStr & vbCrLf & Readlinje End If End If Loop rfil.Close
Set wFil = fso.OpenTextFile(Fil.Path,2) wFil.Write(BygStr) wFil.Close End If Next Next Next
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.