Brauche eine kleine Hilfestellung bei einer VBS-Datei (Software)
Hallo zusammen,
die folgende kleine vbs-Datei dient dazu (in diesem Fall) Bilddateien in mehreren Ordnern gleichzeitig umzubenennen.
Der Name setzt sich aus dem jeweiligen Ordnernamen zusammen in dem die Bilder liegen, sowie einer fortlaufenden dreistelligen Nummerierung.
Ich selbst kenne mich leider gar nicht mit vbs aus. Die Datei hat mir vor einiger Zeit mal jemand geschrieben zu dem ich keinen Kontakt mehr habe.
Nun zur Frage:
Derzeit werden die Dateien in der Reihenfolge sortiert nach dem ursprünglichen Dateinamen abgearbeitet.
Ich möchte jedoch gerne, dass sie nach dem Aufnahmedatum (nicht Änderungsdatum) der Bilddateien aufsteigend (ältestes zuerst) sortiert umbenannt werden damit anschließend die aufsteigenden Nummer auch der Reihenfolge der Aufnahme entspricht.
Könnte jemand die Funktion entsprechend einarbeiten?
Vielen Dank bereits im Voraus!
Gruß NicO
===============================
function RenameFiles(folder)
On Error Resume Next
dim fls, fon, fnn, fend, fext, i, errfiles
if folder.subfolders.count > 0 then
for each fld in folder.subfolders
errfiles = errfiles & RenameFiles(fld)
next
end if
if folder.files.count > 0 then
fls = "[" & folder.Name & "]" & vbcrlf
i = 1
for each fl in folder.files
fon = fl.name
fext = fso.GetExtensionName(fl.Path)
if exts.exists(fext) then
fnn = folder.Name & "_" & Right("000" & i ,3) & "." & fext
fl.name = fnn
if Err.Number <> 0 then
errfiles = errfiles & folder.Path & "" & fon & " (" & err.Description & ")" & vbcrlf
Err.Clear
end if
i = i + 1
end if
next
end if
renamefiles = errfiles
end function
dim fso
dim exts
Set fso = CreateObject("Scripting.FileSystemObject")
' Liste mit Dateitypen (Endungen) die umbenannt werden sollen
set exts = CreateObject("Scripting.Dictionary")
exts.Add "jpg",""
exts.Add "JPG",""
If WScript.Arguments.Count = 0 then
Path = InputBox("Bitte Pfad des Verzeichnisses angeben: (Unterverzeichnisse werden ebenfalls bearbeitet!)","Pfad eingeben")
else
Path = WScript.Arguments(0)
End If
if fso.FolderExists(Path) then
errfiles = renamefiles(fso.GetFolder(Path))
if Len(errfiles) > 0 then
WScript.Echo("Folgende Dateien konnten nicht umbenannt werden" & vbcrlf & errfiles)
end if
else
WScript.Echo("Der angegebene Pfad existiert nicht!")
end if
set fso = Nothing
set ext = Nothing
Wäre es nicht sinnvoll, den Dateinamen gleich gemäß dem Aufnahmedatum zu setzen? Ich mache das seit Jahren so und finde es sehr praktisch, weil dann auch Bilder mehrerer Kameras problemlos gemischt werden können.
Das benötigte Programm renrot (das ganz nebenbei auch noch die Bilder so ins Hoch- oder Querformat dreht, dass sie auch in wirklich jedem Programm richtig angezeigt werden) lässt sich unter Ubuntu Linux ganz einfach über die Paketverwaltung installieren: „renrot“ markieren, „Anwenden“ klicken, fertig.
Von Åke Storck gibt es für 10 Dollar ein sehr praktisches Programm für Windows, das genau das leistet. Bilddateien können damit nach nahezu jedem beliebigen Schema umbenannt werden. Das Programm SetNameToTime 2.4.10 ist als 30-Tage-Demo beim Programmierer erhältlich: