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!
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