Avatar billede passiflora Juniormester
26. januar 2010 - 15:38 Der er 11 kommentarer og
1 løsning

Omdøbe filnavne i mappe

Hej

Jeg har et par tusinde filer jeg gerne skal have tjekket for "dumme" karakterer ... f.eks. mellemrum. Er der
mellemrum i navnet skal jeg gerne have det replaced med "_" (Underscor)

Nogen der ka' hjælpe ... 

Tak
Avatar billede martin_moth Mester
26. januar 2010 - 16:14 #1
Hvis de allesammen ligger i samme mappe, kan du bruge denne kode:

Dim mFSO As FileSystemObject
  Dim mFolder As Folder
  Dim mFil As File
  Dim i As Long
  Dim j As Long
  Set mFSO = CreateObject("Scripting.FileSystemObject")
  Set mFolder = mFSO.GetFolder("C:\TEST")
  For Each mFil In mFolder.Files
    i = i + 1
    If InStr(1, mFil.Name, " ") > 0 Then
      j = j + 1
      mFil.Name = Replace(mFil.Name, " ", "_")
    End If
  Next mFil
  MsgBox "Slut. Så mange filer er undersøgt: " & i & Chr(13) & "Så mange filer blev omdøbt : " & j


Husk, at i VB6 i menuen Project > References skal "Microsoft Scripting Runtime" være hakket af
Avatar billede passiflora Juniormester
27. januar 2010 - 00:17 #2
Tak Martin.

Var så bare ikke klogere end jeg lige kunne afvikle som del af makro i excel

Kan du hjælpe mig lidt videre
Avatar billede arne_v Ekspert
27. januar 2010 - 00:21 #3
Hvad er forskellen på:

  For Each mFil In mFolder.Files
    i = i + 1
    If InStr(1, mFil.Name, " ") > 0 Then
      j = j + 1
      mFil.Name = Replace(mFil.Name, " ", "_")
    End If
  Next mFil

og:

  For Each mFil In mFolder.Files
      mFil.Name = Replace(mFil.Name, " ", "_")
  Next mFil

?
Avatar billede arne_v Ekspert
27. januar 2010 - 00:22 #4
Dumt spørgsmål - du laver statistik ....
Avatar billede passiflora Juniormester
27. januar 2010 - 00:44 #5
Hej Arne ...

Laver ikke statistik ...
Skal her blot have ændret en række filnavne
Avatar billede martin_moth Mester
27. januar 2010 - 11:03 #6
Du spørger:

Hvad er forskellen på:

  For Each mFil In mFolder.Files
    i = i + 1
    If InStr(1, mFil.Name, " ") > 0 Then
      j = j + 1
      mFil.Name = Replace(mFil.Name, " ", "_")
    End If
  Next mFil

og:

  For Each mFil In mFolder.Files
      mFil.Name = Replace(mFil.Name, " ", "_")
  Next mFil

?


Forskellen er, at i den øverste stump kode er der 2 tællere med, der tæller antal filer der omdøbes og undersøges. Det er dem der kommer til sidste i koden i en msgbox. Det er det, arne_v siger er statestik - tror godt at Arne kan gennemskue, at der omdøbes filer ;-)

En anden forskel er, at i den øverste kodestump tilføjer jeg
If InStr(1, mFil.Name, " ") > 0 Then
fordi den kun skal omdøbe filer, hvis der er et mellemrum.
Avatar billede martin_moth Mester
27. januar 2010 - 11:04 #7
Er ikke helt med - er der mere du skal spørge om?
Avatar billede passiflora Juniormester
27. januar 2010 - 11:21 #8
Tak Martin

Jeg skal bare lige have hittet ud af at få det ind i en excel makro ...
Avatar billede martin_moth Mester
27. januar 2010 - 13:50 #9
Måske du skulle have skrevet at du bruger excel - du står trods alt i Visual Basic kategorien ;-)

1) Marker koden
2) Kopier den (Ctrl+C)
3) Gå ind i Excel
4) Gå ind i VBA editoren (hvordan du kommer derind afhænger af hvilken version af Excel du bruger)
5) Sæt koden ind (Ctrl+V)
6) Slet alle type-definitionerne på objekterne. Altså:
[code]
  Dim mFSO As FileSystemObject
  Dim mFolder As Folder
  Dim mFil As File
[/code]
erstattes med
[code]
  Dim mFSO
  Dim mFolder
  Dim mFil
[/code]

7) Kør macroen
Det virker ved mig (Office 2007)
Avatar billede passiflora Juniormester
27. januar 2010 - 14:18 #10
Tak.

Havde håber at jeg selv havde kunne finde løsningen fra et VBA script.

Jeg har lidt flere ting jeg skal teste under min rename kørsel, dem tilføjer jeg. Og tror det virker, også hos mig.

Kan man mon ...
mFil.Name = Replace(mFil.Name, "¤", "")
... og derved fjerne karakteren "¤" i navnet ... Får nok brug for at teste for 2_ efter hinanden, hvor jeg kun skal have den ene fjernet ... det må jeg lege med senere

Tak for hjælpen
Avatar billede martin_moth Mester
27. januar 2010 - 16:18 #11
ok :-)
Avatar billede passiflora Juniormester
27. januar 2010 - 21:37 #12
Fik tilrettet ... og renamed filerne ...

Cool ...
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