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 |