Oprettet tor. d. 03. maj 2012 kl. 10:09:03

daki
daki (17.972 point. Point ude: 0)

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 -

Skrevet tor. d. 03. maj 2012 kl. 11:02:43| #1

IT-GuFFe
IT-GuFFe (10.205 point)
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)

Skrevet tor. d. 03. maj 2012 kl. 11:06:28| #2

IT-GuFFe
IT-GuFFe (10.205 point)
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 :)

Skrevet tor. d. 03. maj 2012 kl. 11:35:10| #3

daki
daki (17.972 point)
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.

Skrevet tor. d. 03. maj 2012 kl. 12:45:07| #4

IT-GuFFe
IT-GuFFe (10.205 point)
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

Skrevet tor. d. 03. maj 2012 kl. 13:55:42| #5

daki
daki (17.972 point)
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.

Skrevet tor. d. 03. maj 2012 kl. 14:05:04| #6

IT-GuFFe
IT-GuFFe (10.205 point)
Oh det beklager jeg :) så havde jeg lige misforstået noget ;) troede det var filen som hed mail@mail.com

Skrevet tor. d. 03. maj 2012 kl. 14:07:46| #7

IT-GuFFe
IT-GuFFe (10.205 point)
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

Skrevet tor. d. 03. maj 2012 kl. 14:23:01| #8

daki
daki (17.972 point)
SUPER!!!
Kan ikke lade være med at takke og bukke :-)

Skrevet tor. d. 03. maj 2012 kl. 14:29:37| #9

IT-GuFFe
IT-GuFFe (10.205 point)
Lyder som om du fik det til at virke :-)

Her er et svar =)

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   


Seneste spørgsmål

Kan ikke få lov til at hente fil

Oprettet den 13. maj 2013 kl. 15.45
fhansen82 giver 60 point for svar | Giv et svar »

Fil link i iE

Oprettet den 13. maj 2013 kl. 10.07
fhansen82 giver 30 point for svar | Giv et svar »

Script der kører .exe fil med parametre fra en fil

Oprettet den 19. marts 2013 kl. 16.48
sularsen giver 100 point for svar | Giv et svar »








Tips & Tricks fra PC World

Teaser billede

Fem smarte funktioner i din Mac som du sikkert ikke kender

Her har du fem muligheder for at tweake din Mac på en fed måde.


Anmeldelser fra PC World

Teaser billede

Test: Samsung Galaxy S4 er et hit - trods gøglertricks

Kan Samsung beholde førertrøjen i det store Android-race? Galaxy S4 er smækfyldt med innovative funktioner, men også med en del gøgl. Er det for meget? Få vores dom over Samsungs nye topmodel.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Ny opfindelse: Oplad din mobil på 20 sekunder

Måske er det snart slut med at lade mobilen op hver aften. Med ny opfindelse kan telefonen få fuld energi på sølle 20 sekunder.


Nyheder fra Computerworld

Teaser billede

Galleri: De 10 vildeste datacentre i verden

I en gammel kirke, i et oppusteligt telt, på nedlagte militæranlæg eller midt i ørkenen. Der er ingen grænser for, hvor man kan banke et datacenter op. Her er de 10 sejeste anlæg i verden. I...


IT Kurser
Samarbejdspartnere

Udgiver · © 2013 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger