Ok, 2e poging (zie ook voor reden om script te maken)
De gegoogelde link had ik ook al gevonden en geprobeerd, maar gaf helaas dezelfde foutmelding.
Overigens is niet alles gejat ; het oorspronkelijke script werkt met een array met vaste waarden die gebruikt worden met hernoemen, terwijl ik de naam bijzoek uit meta-bestandjes, maar goed ...
Heb al geprobeerd de subfolder alleen te hernoemen met commando zoals gebruikt in bovenstaand script (<oude naam> = <nwe naam>) en met de syntax die nu in de code zit (MoveFolder), maar die geven allebei een error 'ongeldige bestandsnaam'.
Heb ook een testje gedaan door de waarden uit de variabelen hard to coderen (volledige pathnaam, zoals in veel gevonden voorbeelden wordt getoond) en dat werkt wel, maar met variabelen niet ?!
Dus : objFSO.MoveFolder "C:\FSO\Samples" , "C:\FSO\Scripts"
Quotes om de naam heen en spaties vervangen levert ook niets op ...
Heb een testje ingebakken om te kijken of de te hernoemen folder bestaat en FolderExists werkt wel met een variable foldernaam, maar de uiteindelijk move/rename actie niet : objFSO.MoveFolder strPath1, strPath2
De gegoogelde link had ik ook al gevonden en geprobeerd, maar gaf helaas dezelfde foutmelding.
Overigens is niet alles gejat ; het oorspronkelijke script werkt met een array met vaste waarden die gebruikt worden met hernoemen, terwijl ik de naam bijzoek uit meta-bestandjes, maar goed ...
Heb al geprobeerd de subfolder alleen te hernoemen met commando zoals gebruikt in bovenstaand script (<oude naam> = <nwe naam>) en met de syntax die nu in de code zit (MoveFolder), maar die geven allebei een error 'ongeldige bestandsnaam'.
Heb ook een testje gedaan door de waarden uit de variabelen hard to coderen (volledige pathnaam, zoals in veel gevonden voorbeelden wordt getoond) en dat werkt wel, maar met variabelen niet ?!
Dus : objFSO.MoveFolder "C:\FSO\Samples" , "C:\FSO\Scripts"
Quotes om de naam heen en spaties vervangen levert ook niets op ...
Heb een testje ingebakken om te kijken of de te hernoemen folder bestaat en FolderExists werkt wel met een variable foldernaam, maar de uiteindelijk move/rename actie niet : objFSO.MoveFolder strPath1, strPath2
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
29
30
31
32
33
34
35
36
37
38
39
| Option Explicit Dim folder, subfolders, oFolder, strStartFolder, objNTFS, objFSO, objInStream1, strTextLine1, strName, strPath1, strPath2, lengte1, strFolder, pos1, lengte2, strNew set objNTFS = Wscript.CreateObject("Scripting.FileSystemObject") Const ForReading = 1, ForWriting = 2 strStartFolder = "C:\export_dossiers\20091211142534_71008164\DOS-2007-0006956" '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, " ", "-") strPath1 = oFolder.Path strPath2 = ofolder.ParentFolder.Path & "\" & strName ' poging met volledig path WScript.Echo "Renaming " & strPath1 & " to " & strPath2 Set objFSO = CreateObject("Scripting.FileSystemObject") if objFSO.FolderExists(strPath1) then WScript.Echo "folder bestaat!" objFSO.MoveFolder strPath1, strPath2 end if set objFSO = Nothing ' poging met alleen subfoldernaam ' WScript.Echo "Renaming " & oFolder.Name & " to " & strName ' objNTFS.MoveFolder oFolder.Name , strName ' recursief aanroepen sub RenameSubFolders oFolder.Path Next End Sub |