[VBS] wijzigen folder-naam

Pagina: 1
Acties:
  • 205 views

  • Goner
  • Registratie: Mei 2002
  • Laatst online: 09:49

Goner

What can I do you for ?

Topicstarter
hoi,
ben bezig met een scriptje om folders te renamen.
Situatie : er is een folderstructuur geëxporteerd uit een applicatie naar Windows filesystem. Vanwege beperkingen met de lengte van de path-naam (max. 250 in de API) worden de lange foldernamen vervangen door een korte 8-cijferige objectid die in de applicatie gebruikt wordt. De oorspronkelijke foldernaam zit in een .txt bestandje met metadata.
Script doorloopt de folders van boven naar beneden en zoekt de naam bij in de bijbehorende .txt file.

Wat uiteindelijk mis gaat id het renamen zelf in regel 24. Ik krijg een melding 'ongeldige bestandsnaam'.
Script krijgt waarschijnlijk geen schoonheidsprijs, 't is een tijd gelden dat ik geprogrammeerd heb en het is veelal jatwerk ;)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Option Explicit
Dim folder, subfolders, oFolder, strStartFolder, objNTFS, objInStream1, strTextLine1, strName, lengte1, strFolder, pos1, lengte2, strNew
set objNTFS = Wscript.CreateObject("Scripting.FileSystemObject")
Const ForReading = 1, ForWriting = 2
strStartFolder = "C:\export_dossiers\20091211142534_71008164\Dossier-2"
'eerste aanroep sub
RenameSubFolders strStartFolder

Sub RenameSubFolders(strFolder)
    set folder = objNTFS.GetFolder(strFolder)
    set subfolders = folder.SubFolders
    For Each oFolder In subfolders
' naam van te hernoemen folder (objectid)
        strFolder = oFolder.Name
' naam uit metadata
        set objInStream1 = objNTFS.OpenTextFile(oFolder.Path & "\" & strFolder & "_Data.txt", ForReading)
        strTextLine1 = objInStream1.ReadLine
        lengte1 = len(strTextLine1) - 15
        strName = trim(mid(strTextLine1, 16, lengte1))
' evt. spaces in naam vervangen ??
'       strName = replace(strName, " ", "-")
        WScript.Echo "Renaming " & oFolder.Name & " to " & strName
'       WScript.Echo "Renaming " & oFolder.Path & " to " & ofolder.ParentFolder.Path & "\" & strName
'       oFolder.Name = strName
' recursief aanroepen sub         
        RenameSubFolders oFolder.Path
    Next
End Sub

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Google -> Eerste hit...

Verder zie ik totaal geen eigen inzet terug; ik zie alleen een (zoals je zelf aangeeft) geleend/gejat script en een foutmelding maar nergens wat je al hebt geprobeerd, gezocht, gevonden etc. en dat is toch wel een vereiste hier in PRG. Zie ook onze Quickstart.

[ Voor 9% gewijzigd door RobIII op 17-12-2009 11:30 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.