Avatar billede samsayit Nybegynder
24. marts 2009 - 04:39 Der er 3 kommentarer

Udskriv unikke del-filnavne fra mappestruktur

Tror bedst jeg kan forklare gennem følgende eksempel...
Eksempel på fil/mappe struktur:

[MAPPE1]
  file1.txt
  file1_2.doc
  file2.txt
  file2.att.txt
  [UNDERMAPPE1]
    file3.txt
    file3_1.txt
    file3.att_2.doc
    file3.att_2_appen.doc

Jeg vil gerne have et vbscript (eller BAT eller andet som kan afvikles i Windows) der kan iterere igennem alle filnavne (ikke mappenavne) i MAPPE1 samt alle undermapper, og udskrive følgende (ud fra eksemplet) i en tekstfil:
- file1
- file2
- file2.att
- file3
- file3.att

Altså:
- først og fremmest ignorere fil-endelsen - men ikke evt. andre dele af filnavnet som kommer efter et punktum (men før fil endelsen).
- dernæst kun den del af filnavnet der kommer før den første _ (underscore).
- og så så kun unikke, dvs. ikke to af "file1".

Ved godt dette lyder indviklet og råddent, men jeg desværre i en situation hvor jeg skal have det gjort :-(

Alt hjælp vil blive modtaget med kyshånd!
Avatar billede supertekst Ekspert
24. marts 2009 - 08:52 #1
Hvor mange filer vil der være - ca.?

Er der tale om en mappe med undermapper - eller?
Avatar billede morten_leth Nybegynder
24. marts 2009 - 19:03 #2
Hey Samsayit

Jeg har ikke lige noget færdigt liggende i skuffen...

Men jeg har lidt som du nok kan bruge....
'Option Explicit

Private mlngfileCount

Dim strPath, strFind
Dim objFSO
Dim objFolder

strPath = InputBox("Enter startpath:", , "D:\Mappe1")

mlngfileCount = 0
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strPath)
Call ReplaceFileNameInFolder(objFSO, objFolder, strFind)
MsgBox "Find and change finished!" & vbCrLf & "Changed " & mlngfileCount, vbInformation


Sub ReplaceFileNameInFolder(objFSO, objFolder, strFind)
    Dim objDocFile
    Dim objSubFolder
    Dim objDoc
    Dim objHyperlink
    Dim blnChanged
    Dim strOldAddress
    Dim strNewAddress
    Dim StrFolder
   
    For Each objDocFile In objFolder.Files
        If UCase(objFSO.GetExtensionName(objDocFile.Path)) = "TXT" Then
            'renames the file
            wscript.echo objDocFile.Name
            mlngfileCount = mlngFileCount + 1
        End If
    Next
   
    For Each objSubFolder In objFolder.SubFolders
        Call ReplaceFileNameInFolder(objFSO, objSubFolder, strFind)
    Next
End Sub
Avatar billede morten_leth Nybegynder
24. marts 2009 - 19:05 #3
Og supertekst, blot for lige at gøre opmærksom på han rent faktisk selv skriver at det skal være med undermapper.. :D
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