26. januar 2010 - 15:38Der 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)
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
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.
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]
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
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.