Hallo Gemeinde,
bei meinen Script, das Dateien entsprechend deren Vorbau in (zu erstellende) Unterordner verschiebt, tritt in Zeile 31 immer ein "Erlaubnisfehler" auf. Das Scipt läuft zwar trotzdem "ungestört" ab, aber irgendwie nervt die Fehlermeldung bei der Erstellung der Logdatei. Ich hab schon fast alles ausprobiert und die Zeile
Im übrigen verschiebt das Script Dateien aus dem aktuellen Ordner in die Unterordner Jahr\Monat\Tag. Dies geschieht anhand eines "Vorbaus" (JJJJMMTT) der durch ein Gleichheitszeichen vom Dateinamen getrennt wird. Der Orignaldateiname wird durch das Verschieben wiederhergestellt. So lassen sich Dateien mit alphanumerischen Namen sehr gut nach Jahren und darin nach Monaten und darin wiederum nach Tagen trennen.
Wäre schön, wenn ich die Fehlermeldung "Erlaubnis verweigert" (Zeile 18) wegkäme. Hier der Code:
Danke im voraus
M.
bei meinen Script, das Dateien entsprechend deren Vorbau in (zu erstellende) Unterordner verschiebt, tritt in Zeile 31 immer ein "Erlaubnisfehler" auf. Das Scipt läuft zwar trotzdem "ungestört" ab, aber irgendwie nervt die Fehlermeldung bei der Erstellung der Logdatei. Ich hab schon fast alles ausprobiert und die Zeile
logfile.close
an alle mögliche Stellen gesetzt, es geht einfach nicht weg...Im übrigen verschiebt das Script Dateien aus dem aktuellen Ordner in die Unterordner Jahr\Monat\Tag. Dies geschieht anhand eines "Vorbaus" (JJJJMMTT) der durch ein Gleichheitszeichen vom Dateinamen getrennt wird. Der Orignaldateiname wird durch das Verschieben wiederhergestellt. So lassen sich Dateien mit alphanumerischen Namen sehr gut nach Jahren und darin nach Monaten und darin wiederum nach Tagen trennen.
Wäre schön, wenn ich die Fehlermeldung "Erlaubnis verweigert" (Zeile 18) wegkäme. Hier der Code:
Visual Basic-Quellcode
- ' Beginn Hauptprogramm
- Dim objFso, strFolder
- Set objFso = CreateObject("Scripting.FileSystemObject")
- strFolder = objFso.GetParentFolderName(WScript.ScriptFullName)
- ' strFolder=".\" ' der aktuelle Ordner
- If objFso.FolderExists(strFolder) Then
- Call Umwandeln(objFso.GetFolder(strFolder))
- End If
- Set objFso = Nothing
- 'Hauptprogramm Ende
- Sub Umwandeln(ByRef objFolder)
- Dim objFile, objSubFolder, logfile, Protokoll
- Dim Ordnerpfad, Datum
- Protokoll="Dateien.log"
- set logfile = objFso.CreateTextFile(Protokoll,2) ' 2 Überschreiben ' Erlaubnis verweigert
- For Each objFile In objFolder.Files
- ' If LCase(objFso.GetExtensionName(objFile.Name)) = "jpg" Then
- If Instr(1,objFile.Name,"=",1) Then
- arrFeld=Split(objfile.Name,"=")
- OrgDatei=arrFeld(1)
- Datum=arrFeld(0)
- If IsNumeric(Datum) Then 'IsDate wäre besser..
- DD=Right(Datum,2)
- MM=Mid(Datum,5,2)
- YYYY=Left(Datum, 4)
- Ordnerpfad=strFolder & "\" & YYYY & "\" & MM & "\" & DD & "\"
- logfile.writeline ArrFeld(0) & " || " & OrgDatei
- If Not objFso.FolderExists(Ordnerpfad) Then ' Ordner erstellen falls noch nicht vorhanden
- CreateFolderRecursive(Ordnerpfad) ' Funktion zum rekursiven Ordnererstellen
- End If
- objFso.Movefile objFile, Ordnerpfad & OrgDatei
- End if
- End if ' von Numeric
- ' End If ' für die Extension: jpg
- Next
- For Each objSubFolder In objFolder.SubFolders ' für Unterordner
- Call Umwandeln(objSubFolder)
- Next
- logfile.close
- End Sub
- Function CreateFolderRecursive(FullPath)
- ' rekursives Ordneranlegen
- Dim arr, dir, path
- Dim oFs
- Set oFs = WScript.CreateObject("Scripting.FileSystemObject")
- arr = split(FullPath, "\")
- path = ""
- For Each dir In arr
- If path <> "" Then path = path & "\"
- path = path & dir
- If oFs.FolderExists(path) = False Then oFs.CreateFolder(path)
- Next
- End Function
Danke im voraus
M.