Bestimmte Dateien per vbs verlinken
Ziel: Aus einem Verzeichnis mit mehren Tausend (WebCam)-Bildern sollen immer nur die ersten eines Zeitblocks (80Stk) auf eine HTML-Internet-Seite verlinkt werden.
Hallo,
unsere Webcam speichert per FTP nach einem Alarm-Ereignis jede Sekunde (80Sek lang) ein Bild auf einem Server. Auf diesem Server läuft auch ein IIS der eine Informationsseite bereitstellt. Auf dieser Seite soll nun immer nur das erste Bild einer 80er Folge als HTML-Link (vielleicht auch als kleine Bild-Vorschau) verlinkt werden. Die Bilder werden nicht älter als 21 Tage. Dafür sorgt eine kleine Batch-Datei per AT. Es wäre schön, diese Funktion gleich mit in das VB-Script zu integrieren.
Alles im Ganzen eigentlich machbar, was mich jedoch ein bisschen vor Probleme stellt ist die "erste" Datei zu finden. Der Dateiname eines Bildes lautet z.B. so: "image_080821_184850.jpg"
(image_ JahrMonatTag_StundeMinuteSekunde.jpg) und das letzte Bild dieses "80er Blocks" so: "image_080821_185010.jpg" Danach kommen weiter "80er Blocks". Die Anzahl aller Bilder zusammen in einem Zeitraum von 3 Woche erreicht schon mal locker so an die 2000. Als Programmiersprache kommt am liebsten Visual Basic Script in Frage.
Mit welcher Art bekomme ich den Dateinamen jeder "ersten" Datei eines 80er Blocks?
Bin für alle Ideen und Tipps reichlich dankbar!
Mit freundlichen Grüssen
Superfunk
Hallo,
unsere Webcam speichert per FTP nach einem Alarm-Ereignis jede Sekunde (80Sek lang) ein Bild auf einem Server. Auf diesem Server läuft auch ein IIS der eine Informationsseite bereitstellt. Auf dieser Seite soll nun immer nur das erste Bild einer 80er Folge als HTML-Link (vielleicht auch als kleine Bild-Vorschau) verlinkt werden. Die Bilder werden nicht älter als 21 Tage. Dafür sorgt eine kleine Batch-Datei per AT. Es wäre schön, diese Funktion gleich mit in das VB-Script zu integrieren.
Alles im Ganzen eigentlich machbar, was mich jedoch ein bisschen vor Probleme stellt ist die "erste" Datei zu finden. Der Dateiname eines Bildes lautet z.B. so: "image_080821_184850.jpg"
(image_ JahrMonatTag_StundeMinuteSekunde.jpg) und das letzte Bild dieses "80er Blocks" so: "image_080821_185010.jpg" Danach kommen weiter "80er Blocks". Die Anzahl aller Bilder zusammen in einem Zeitraum von 3 Woche erreicht schon mal locker so an die 2000. Als Programmiersprache kommt am liebsten Visual Basic Script in Frage.
Mit welcher Art bekomme ich den Dateinamen jeder "ersten" Datei eines 80er Blocks?
Bin für alle Ideen und Tipps reichlich dankbar!
Mit freundlichen Grüssen
Superfunk
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 96523
Url: https://administrator.de/contentid/96523
Ausgedruckt am: 26.11.2024 um 14:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo superdunk!
Es wird vorausgesetzt, dass sich ausschließlich nach dem Schema "image_JJMMTT_hhmmss.jpg" benannte Bilddateien im angegebenen Ordner befinden.
Da (als Demo) alle gefundenen Dateinamen ausgegeben werden, sollte beim Testen das Script über "cscript" gestartet werden, damit die Ausgabe in der Konsole und nicht per MsgBox erfolgt (alternativ kann natürlich die Liste auch in eine Textdatei ausgegeben oder in ein Array übernommen werden).
Grüße
bastla
Mit welcher Art bekomme ich den Dateinamen jeder "ersten" Datei eines 80er Blocks?
Das könnte etwa so gehen:Ordner = "D:\Verzeichnis"
Set fso = CreateObject("Scripting.FileSystemObject")
Const adDBTimeStamp = 135
Const adVarChar = 200
Set DataList = CreateObject("ADOR.Recordset")
DataList.Fields.Append "FileName", adVarChar, 23
DataList.Fields.Append "Timestamp", adDBTimeStamp
DataList.Open
For Each File In fso.GetFolder(Ordner).Files
FN = File.Name
DataList.AddNew
DataList("FileName") = LCase(FN)
DataList("Timestamp") = _
DateSerial("20" & Mid(FN,7,2), Mid(FN,9,2), Mid(FN,11,2)) + _
TimeSerial(Mid(FN,14,2), Mid(FN,16,2), Mid(FN,18,2))
Next
List = ""
Last = DateSerial(1999,1,1)
If Not DataList.EOF Then
DataList.Sort = "FileName"
DataList.MoveFirst
Do Until DataList.EOF
This = DataList.Fields.Item("Timestamp")
If DateDiff("s", Last, This) > 1 Then
List = List & vbCrLF & DataList.Fields.Item("FileName")
End If
Last = This
DataList.MoveNext
Loop
End If
WScript.Echo Mid(List, 3)
Da (als Demo) alle gefundenen Dateinamen ausgegeben werden, sollte beim Testen das Script über "cscript" gestartet werden, damit die Ausgabe in der Konsole und nicht per MsgBox erfolgt (alternativ kann natürlich die Liste auch in eine Textdatei ausgegeben oder in ein Array übernommen werden).
Grüße
bastla