Avatar billede daki Juniormester
03. maj 2012 - 10:09 Der 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 -
Avatar billede Mads Larsen Nybegynder
03. maj 2012 - 11:02 #1
Hvis det er samme script som opretter mapperne + filerne - som også skriver i ini filen.

Så ville det nemmeste være at gemme kundenummeret som et variable og så indsætte.

Ellers så skal du til at formatere din mappe string.

TestStr = "S:\DocPost\Mail\BATCH\000333333\dhjk@gmail.com"
StrArr = Split(TestStr,"\")
Kundenr = StrArr(4)
MsgBox(kundenr)
Avatar billede Mads Larsen Nybegynder
03. maj 2012 - 11:06 #2
TestStr = "S:\DocPost\Mail\BATCH\000333333\dhjk@gmail.com"
StrArr = Split(TestStr,"\")
Kundenr = CLng(StrArr(4))
MsgBox(kundenr)

Så er de foran stillede nuller også væk :)
Avatar billede daki Juniormester
03. maj 2012 - 11:35 #3
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.
Avatar billede Mads Larsen Nybegynder
03. maj 2012 - 12:45 #4
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
Avatar billede daki Juniormester
03. maj 2012 - 13:55 #5
Mange tak!
Men den kikker ikke i den sidst undermappe :-(

eks.
S:\Docpost\mail\batch\000500458\mail@mail.com
flytter jeg ini-filen til
S:\Docpost\mail\batch\000500458
tilføjes værdien godt nok.
Avatar billede Mads Larsen Nybegynder
03. maj 2012 - 14:05 #6
Oh det beklager jeg :) så havde jeg lige misforstået noget ;) troede det var filen som hed mail@mail.com
Avatar billede Mads Larsen Nybegynder
03. maj 2012 - 14:07 #7
Så skulle den kunne tage en subfolder mere ;)

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
Avatar billede daki Juniormester
03. maj 2012 - 14:23 #8
SUPER!!!
Kan ikke lade være med at takke og bukke :-)
Avatar billede Mads Larsen Nybegynder
03. maj 2012 - 14:29 #9
Lyder som om du fik det til at virke :-)

Her er et svar =)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester