Zeit aus Sekunden berechnen

Mitglied: stoner

stoner (Level 1) - Jetzt verbinden

02.09.2006, aktualisiert 03.09.2006, 6081 Aufrufe, 5 Kommentare

Ahoi zusammen,

ich lese aus verschiedenen Dateien bestimmte Felder aus und spiele diese in eine Datenbank ein (automatisiert alle 10 minuten).
Mein Problem ist, dass diese Dateien aus verschiedenen Quellen stammen, somit sind auch die Felder z.T. unterschiedlich.

Speziell ein Feld macht Probleme:
In der 1. Datei ist dieses Feld in Time Format angegeben, z.B. "00:03:12" für 3 minuten und 12 Sekunden,
in der 2. Datei steht die Zeit im Sekunden Format : "000192".

nun sollte ich das Format der 2. in das Time Format der ersten umwandeln da beide Dateien in die gleiche Tabelle eingelesen werden, das Feld steht als Parameter %t% bereit.

Ich habe die letzten Tage das Web nach einer Lösung durchsucht jedoch ohne ein Ergebnis. Am besten wäre eine Lösung als reine bat, mit nem freeware (command Line) tool oder ne vbs wäre auch kein Prob.

besten Dank schon mal,

Frank
Mitglied: Biber
03.09.2006 um 01:35 Uhr
Tja, stoner,

dann werf ich mal als Erster ein kleines Batch-Freewaretool in den Ring.
Demo am Cmd-Prompt:
Der Batch selbst ist ja nur zu Demo-Zwecken.
In Deinen tatsächlichen Batch brauchst Du ja nur den Block ":secsToTimeFmt" übernehmen.

Gruß
Biber
Bitte warten ..
Mitglied: stoner
03.09.2006 um 13:30 Uhr
Hallo Biber,

besten Dank wieder mal für deine Hilfe, dass ganze klappt wunderbar, und nachdem ich eine halbe Stunde über die bat gegrübelt habe ist mir auch einiges klar über die Syntax.
Kleine Änderung da Millisekunden als Quellwert:
Soweit klappt alles, nur werden die Werte nicht gerundet, sondern die millisek. abgeschnitten. gibt es eine Möglichkeit den Wert zu runden?
+500 bei den sec, haben die einen bestimmten Grund? klappt mit z.b. 100 auch.

@Biber besten Dank nochmal für deine Hilfe, mittlerweile komm ich immer besser zurecht, eine Frage hät ich noch zur Syntax (zu einem älteren Thema):

Set "zeile=%*" Setzt den kompletten Input in den Parameter zeile
Set zeile=%zeile: =% löscht leerzeichen im Parameter zeile
Set zeile=%zeile:;;=;0;% ersetzt ;; mit ;0; wieder im Parameter zeile

Habe ich den Code richtig interpretiert? Irgendwie ist mir das noch ein bischen schleierhaft mit dem ändern des Parameters zeile mit dem gleichen Parameternamen. Ebenso mit dem Syntax der Parameter innerhalb der %-Zeichen.

Schönen Sonntag noch,

stoner
Bitte warten ..
Mitglied: Biber
03.09.2006 um 13:59 Uhr
Moin stoner,
und nachdem ich eine halbe Stunde über die bat gegrübelt habe ist mir auch einiges klar über die Syntax
So war es gedacht ... ich hab auch bewusst mit Kommentaren gegeizt gestern.
Denn ohne Anpassungen wird es nicht gehen, dachte ich, und deshalb musst Du Dich eben mit diesem kryptischen Zeug auseinandersetzen.
eine Frage hät ich noch zur Syntax (zu einem älteren Thema):
Set "zeile=%*" Setzt den kompletten Input in den Parameter zeile
Set zeile=%zeile: =% löscht leerzeichen im Parameter zeile
Set zeile=%zeile:;;=;0;% ersetzt ;; mit ;0; wieder im Parameter zeile
Habe ich den Code richtig interpretiert?
Dreimal JA auf alle Fragen.
Der Platzhalter %* steht für "alle übergebenen Parameter".
Die Zeichen-Ersetzen-Funktion ist halt wirklich so schlicht mit "ersetze Zeichen vor dem Gleichheitszeichen mit Zeichen nach dem Gleichheitszeichen".
Sieht in einigen konkreten Fällen definitiv merkwürdig aus, so z.B. beim Ersetzen von Leerzeichen durch "nichts".
Aber die Funktion tut, was sie verspricht.

+500 bei den sec, haben die einen bestimmten Grund? klappt mit z.b. 100 auch.
Okay, das war nur ein Verständnistest. Hast bestanden. ;-) face-wink
Geht natürlich auch mit 100 oder 400 oder 11100...
Ist nur zur Verhinderung von Zahlenwerten wie "07" , "08", "09" , die von Buggybuggybuggy-CMD als Oktal interpretiert werden.
Und bei "Set /a sec=09" würde es knallen:
Deshalb "rechne" ich eigentlich immer mit Zahlen größer 100.... und nehme dann für die Anzeige die letzten beiden Ziffern.
Oben in meinem Batch-Schnipsel wäre es auch richtiger so gewesen:
...also lieber jeweils die letzten 2 Zeichen als die Zeichen ab Zeichen 2... (da hatte ich geschlampt *gg)

Soweit klappt alles, nur werden die Werte nicht gerundet, sondern die millisek. abgeschnitten. gibt es eine Möglichkeit den Wert zu runden?
Jein... runden direkt nicht.
Aber wenn es wichtig ist, dann folgende Strategie (angenommen, ich hätte 1788 Millisekunden):
Im Batch sinngemäß:
Dir auch schönen Restsonntag
Biber
Bitte warten ..
Mitglied: stoner
03.09.2006 um 17:40 Uhr
Hallo Biber,

besten Dank, dein letztes Posting hat mir die Augen geöffnet, schön langsam wird mir klar was da in meiner bat vor sich geht ;-) face-wink , sind ja mittlerweile auch schon 100 zeilen code.
Ich habe das mit den 1/10 Sekunden (nicht ms) folgendermassen gelöst:

Besten Dank nochmal,

stoner
Bitte warten ..
Mitglied: Biber
03.09.2006 um 19:08 Uhr
Jepp, stoner,

ich sehe, Du hast es verstanden.
Sieht gut aus ;-) face-wink

Und ob es nun Zehntel-, Hundertstel- oder Tausendstelsekunden sind, das ändert ja nichts an der Mimik.

Ich setze den Beitrag mal auf gelöst, lass ihn aber offen.
Vielleicht wird ja noch eine *.vbs-Variante oder ein anderer Algorithmus gepostet.

Schönen Abend
Biber
Bitte warten ..
Heiß diskutierte Inhalte
Switche und Hubs
Probleme im Netzwerk Switche teilweise nicht erreichbar
hukimanVor 21 StundenFrageSwitche und Hubs29 Kommentare

Guten Morgen, seit Monaten haben wir hier immer wieder Probleme mit dem Netzwerk, das Problem konnte ich leider aber noch immer nicht finden. Es ...

Erkennung und -Abwehr
Einer Malware auf der Spur. Benötige Sherlock Holmes!
streamVor 1 TagFrageErkennung und -Abwehr7 Kommentare

Guten Abend Wenn ich meine Windows-10-Kiste starte, so gibt mir mein Router eine Meldung aus, dass eine bestimmte IP-Adresse wegen Bösartigkeit geblockt wurde. Auf ...

Batch & Shell
Tabellarische Ausgabe der Netzwerkschnittstellen
gelöst dysti99Vor 20 StundenFrageBatch & Shell18 Kommentare

Mit - ip a - werden ja die Netzwerkschnittstellen angezeigt. Ich möchte mit ein Batchscript folgende Ausgabe erreichen: 1 eth0 192.168.1.1 AD:13:67:56:14:D1 2 eth1 ...

Ubuntu
Mailserver Test Provider IP
gelöst it-blzVor 1 TagFrageUbuntu9 Kommentare

Hallo, ist es möglich einen "Mailserver" (Imap + smtp) in einer Virtual Box mit einer Provider IP (dynamisch - ist allerdings konstant) zu testen? ...

Microsoft
MS Teams und Office im gemeinnützigen Verein
DanielBodenseeVor 1 TagFrageMicrosoft6 Kommentare

Hallo zusammen, ich würde gerne in unserem anerkannten gemeinnützigen Verein eine gemeinsame Platform aufbauen, über die wir Diskutieren und uns austauschen können, insbesondere bei ...

Hardware
DisplayPort zu USB-C Adapter Converter
gelöst felixhuth-itVor 1 TagFrageHardware11 Kommentare

Hallo liebe Gemeinde Ich habe da ein kleines Problemchen. Der Kunde wollte einen 14 Zoll Monitor mit Touch in Verbindung mit einem Mini PC ...

Linux Netzwerk
SAMBA FS Portfreigabe
gelöst Jannik2018Vor 1 TagFrageLinux Netzwerk17 Kommentare

Hallo zusammen, ich habe eine Portfreigabe für meinen SAMBA Server mit Netzwerkfreigaben auf port 445 TCP eingerichtet allerdings wenn ich per DNS oder externer ...

Microsoft Office
Wechsel von Office - Exchange on premise zu Office 365 - Exchange Online
jann0rVor 16 StundenAllgemeinMicrosoft Office10 Kommentare

Moin, ich weiß nicht so richtig, unter welche Überschrift man dieses Thema hier am besten packen kann, daher mal als allg. Beitrag / Erfahrungsbericht. ...