Avatar billede martin_moth Mester
03. juni 2002 - 13:24 Der er 7 kommentarer og
1 løsning

Omdøbe alle filer i en mappe fra VB?

Kan man fra VB loope gennem alle filer, f.eks. alle *.jpg i en mappe, og så omdøbe dem til 1.jpg, 2.jpg ... osv?

Problemet er, at jeg ikke vil _åbne_ filerne og gemme dem under et andet navn - de skal bare omdøbes uden at blive åbnet, så programmet kan virke på alle typer filer... Kan man det?

/Martin

PS - Hvis man kan - og det er meget kompliceret - smider jeg gerne flere point efter et svar;o)
Avatar billede tjacob Juniormester
03. juni 2002 - 13:43 #1
Tilføj en reference til Microsoft Scripting Runtime til dit projekt.

Og indsæt følgende i f.eks. en knap:

Private Sub Command1_Click()
    Dim fso, f, f1, fc, count

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.GetFolder("stitildinmappe")    <-her indsættes din mappes sti
    Set fc = f.Files
   
    count = 1
    For Each f1 In fc
      If Right(f1.Name, 4) = ".jpg" Then
          f1.Name = count & ".jpg"
          count = count + 1
      End If
    Next

    f1 = Nothing
    fc = Nothing
    f = Nothing
    fso = Nothing

End Sub

Dette vil omdøbe jpg filer

/tjacob
Avatar billede tjacob Juniormester
03. juni 2002 - 13:47 #2
Det kan godt være du skal have set med i de 4 nothing linier.
Avatar billede tjacob Juniormester
03. juni 2002 - 13:52 #3
Denne metode kan kun anvendes hvis filnavnet(f.eks. 1.jpg) IKKE findes i forvejen. Det kunne man så teste først.
Avatar billede martin_moth Mester
03. juni 2002 - 14:12 #4
Sådan!

Mere præcist kunne det ikke gøres - jeg takker!
Avatar billede tjacob Juniormester
03. juni 2002 - 14:20 #5
i mellemtiden fik jeg lavet koden der tjekker navnene først:

-Den er lidt klodset og kan sikkert finpudses:

Private Sub Command1_Click()
    Dim fso, f, f1, fc, count, antal, i

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.GetFolder("C:\Documents and Settings\Tonny\Skrivebord\test1")
    Set fc = f.Files
   
    antal = 0
    For Each f1 In fc
      If Right(f1.Name, 4) = ".jpg" Then
          antal = antal + 1
      End If
    Next
    For Each f1 In fc
        If Right(f1.Name, 4) = ".jpg" Then
            For i = 1 To antal
                If f1.Name = i & ".jpg" Then f1.Name = "zxz" & i & "dsa.jpg"
            Next i
        End If
    Next f1
    count = 1
    For Each f1 In fc
        If Right(f1.Name, 4) = ".jpg" Then
        f1.Name = count & ".jpg"
        count = count + 1
        End If
    Next f1
    Set f1 = Nothing
    Set fc = Nothing
    Set f = Nothing
    Set fso = Nothing
   
End Sub
Avatar billede martin_moth Mester
03. juni 2002 - 15:40 #6
Den har jeg også lavet - bare på en anden måde - men tak alligevel. Hvis du ikke er tilfreds med de 30, så må du jo bede om flere ;o) /Martin
Avatar billede tjacob Juniormester
03. juni 2002 - 15:43 #7
Nej, nej -alt OK! -havde som sagt lavet den alligevel.
Avatar billede martin_moth Mester
03. juni 2002 - 15:49 #8
Du skal være velkommen til at fortsætte på http://www.eksperten.dk/spm/219755 :o]
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