Jump to content

VBS-Zeiten auslesen und addieren


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Moin Moin,

ich möchte ein VbScript erstellen, welches mir aus einer TXT Datei die dort eingetragenen Zeiten
ausliest und dann am Schluss addiert.

Die Zeiten stehen so in der Textdatei:
gesamt 02:30
gesamt 01:25
gesamt 00:35
gesamt 01:00
es sind nicht immer vier Einträge, es können auch mal mehrere sein.
Einen intressanten Hinweis habe ich in Eurem Forum gefunden, ist
vom vom 15.Januar 2010 unter "VBS-Zeiten addieren". Die Lösung
von NilsK würde mir sehr gefallen. Aber wie kann ich die Zeiteinträge
dort einlesen, da diese immer varieren? Und kann man das "gesamt"
herausfiltern? Ich würde mich freuen, wenn jemand eine Idee hätte!

Grüße von
Olli-AS

Link zu diesem Kommentar

Wenn's auch was moderneres als VBScript sein darf .... hier ist ne einfache Powershell-Lösung.

Get-Content -Path C:\sample\Zeiten.txt |
    ForEach-Object {
        $_ -match '(\d\d):(\d\d)' | Out-Null
        $Zeit = $Zeit + (New-TimeSpan -Hours $Matches[1] -Minutes $Matches[2])
    }
"Zeit gesamt: {0:g}" -f $Zeit 

... so als Vorschlag zum Starten ....  ;-)

Link zu diesem Kommentar
vor 2 Stunden schrieb Olli-As:

Wow - so kurz geht das. Erstmal vielen Dank. Aber wie starte ich das?

 

Powrshell lernen kann im Jahr 2018 nicht schaden. Auch ist es nicht verboten, selbst tätig werden. Ich hab für dich etwas gefunden, am besten anmelden und loslegen: https://mva.microsoft.com/de-de/training-courses/windows-powershell-3-0-f-r-einsteiger-teil-1-8545

Link zu diesem Kommentar

Hallo Nils,
ja, dann fange ich mal an. Ich soll aus einer Html-Datei alle Zeiten auslesen,
vor denen wie schon beschrieben "gesamt 0x:xx" stehen. Von Dir fand
ich dieses Script:

DateStart = #1 / 1 / 1601#
DateEnd = DateStart
Dim Time(2)
Time(0) = "00:30"
Time(1) = "00:25"
Time(2) = "00:15"
For Each PartTime In Time
DateEnd = DateAdd("h", Left(PartTime, 2), DateEnd)
DateEnd = DateAdd("n", Right(PartTime, 2), DateEnd)
Next
WScript.Echo "Gesamt: " & DateDiff("d", DateStart, DateEnd) & " Tage, " & FormatDateTime(DateEnd, vbShortTime)
WScript.Echo "... oder " & DateDiff("n", DateStart, DateEnd) & " Minuten gesamt."

Das würde ich gerne einsetzen, habe aber die Schwierigkeit, wie ich aus meiner o.g. Datei die
Time(0), Time(1) ggf. bis Beispiel Time(12) befülle. Bei Dir sind die Werte ja fest vorgeben und
in meinem Fall wären sie variabel (Time(0) = variabler Wert usw.  aus Html-Datei einlesen). Ich hoffe ich
konnte mich klar genug ausdrücken.  Gerne sollte es VBS sein, da die PowerShell für mich z.Zt.
noch ein "Böhmisches Dorf" ist, heißt aber nicht, das ich mich dieser Sache verschließe! 
Gruß Olli

Link zu diesem Kommentar
vor 2 Stunden schrieb Olli-As:

Mit VBS kenne ich mich etwas besser aus, hier verstehe ich nur Bahnhof.

Hmmm ... wenn Du ansatzweise der englischen Sprache mächtig bist, ist Powershell-Code quasi selbsterklärend. Die meisten cmdlets (so heißen die nativen Powershell-Befehle - gesprochen "kommahndlets") machen ziemlich genau das, wonach sie klingen. Get-Content z.B. "extrahiert" den Inhalt einer Datei und gibt ihn entweder auf der Konsole aus oder reicht ihn per Pipeline ( | ) an das nächste cmdlet weiter.  ... usw. und so fort ...

Sich die Grundlagen von Powershell draufzuschaffen dauert nicht lange. Und wenn Du noch ne Weile in Windows-Umgebungen unterwegs sein möchtest und das vielleicht sogar beruflich, solltest Du Dir meiner Meinung nach eher Powershell aneignen statt VBScript.

Es gibt quasi unzählige auch kostenlose Quellen im Internet, nicht zuletzt dieses Forum.

Ein guter und sogar einigermaßen unterhaltsamer Start gelingt bestimmt mit dem kostenlosen Video-Kurs der Microsoft Virtuall Academy - Getting Started with Powershell. Die Videos haben eine Gesamtlänge von ca. 8 bi 10 Stunden, aber danach hast Du mit Sicherheit das Nötigste drauf. ;-)

vor 6 Minuten schrieb Olli-As:

...

Das würde ich gerne einsetzen, habe aber die Schwierigkeit, wie ich aus meiner o.g. Datei die
Time(0), Time(1) ggf. bis Beispiel Time(12) befülle. ...

Das klingt danach, als wärst Du bei VBScript auch nicht wirklich der Profi. ('bin ich übrigens auch nicht ;-) )

Wie oben schon geschrieben: die Einstiegshürden sind bei Powershell deutlich niedriger als bei VBScript.

Link zu diesem Kommentar

Moin,

 

nein, du sprichst immer noch von dem Detail, nicht von der ganzen Aufgabe. Warum sollst du die HTML-Datei auslesen? Was soll mit dem Ergebnis geschehen? Sol das einmalig passieren oder regelmäßig? Es ist leichter, eine passende Empfehlung auszusprechen, wenn man weiß, was am Ende das gewünschte Ergebnis ist.

 

Gruß, Nils

 

Link zu diesem Kommentar

Guten Abend Nils,
ich habe eine Html-Datei/Tabelle, die wie folgt ausieht:
Zeiten:                    von              bis                     = gesamt Stunden
akt/datum             02:30  Uhr  04:00 Uhr        gesamt  01:30 Std.
akt/datum             04:30  Uhr  07:00 Uhr        gesamt  02:30 Std.
akt/datum             01:00  Uhr  04:00 Uhr        gesamt  03:00 Std.
akt/datum             07:15  Uhr  09:00 Uhr        gesamt  01:45 Std.
usw.
Die gesamt Stunden möchte ich einmal in der Woche addieren und das Ergebnis
unterhalb der Stunden zurück in die Html schreiben, am besten so:
                                                                              _________________
                                                                              gesamt 07:45 Std. per Woche
                                                                             =================
Wie BofH_666 schon bemerkte, hast Du es mit einem Amateur zu tun, der
VBScript noch einigermaßen versteht und mit einer PowerShell-Lösung
zur Zeit überfordert wäre. Ich habe aber verstanden das VBS wohl eine
aussterbende Spezies ist und für die Zukunft wohl umdenken muß.
Deshalb wäre ich in meinem Falle über eine VBS-Lösung glücklicher.
Ach ja zu deiner Frage noch - das Script sollte regelmäßig laufen.
Gruß Olli

Link zu diesem Kommentar

Guten Abend an alle die schon geantwortet haben,

da hat wohl keiner eine Idee mehr in Punkto VBS;(
Die Problematik bei mir liegt nicht wie ich die Zeiten auslese,
sondern sie mit VBS zusammen addiere.
Da habe ich schon Dr. Google zu Rate gezogen, leider
ohne Erfolg. So bin ich auch zu Euch geraten.
Ich soll einfach nur die Zeiten einer ganz einfachen
HTML-Site in ein variables Array einlesen und dann
zusammen zählen. Da liegt mein Problem!
Die Html-Dat. wird  von unseren Vereinsmitgliedern
manuell befüllt und ich würde ihnen gerne, die im
Verein geleisteten Std., einmal wöchentlich repräsentieren.
Gruß Olli

Link zu diesem Kommentar

Hi,

 

wo bzw. wie befüllen die Mitglieder denn die HTML Dateien? Ist da evtl. ein PHP Script o.ä. im Hintergrund auf einem Webserver? Dann wäre das der Punkt zum Ansetzen wo du die Zeiten direkt "automatisch" zusammenrechnen könntest.

 

Ansonsten leg es eben auf einen Webserver und mach es bzw. lass es mit PHP machen.

 

Gruß

Jan

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...