superfunk
Goto Top

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

Content-Key: 96523

Url: https://administrator.de/contentid/96523

Printed on: April 19, 2024 at 22:04 o'clock

Member: bastla
bastla Sep 09, 2008 at 22:50:53 (UTC)
Goto Top
Hallo superdunk!

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)
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
Member: superfunk
superfunk Sep 10, 2008 at 06:37:42 (UTC)
Goto Top
Guten Morgen Bastla,

vielen Dank, das Script funktioniert genaus so wie ich es haben wollte.
Damit kann ich weitermachen.

Mit freundlichen Grüssen
Superfunk