Zeitstempel einer Datei unter MS-DOS auslesen und "verpflanzen"

  • Hallo zusammen.


    Ich stehe vor einer kleinen Fleißaufgabe und komme nicht so recht weiter.


    Da gibt es einen Server, der jeden Tag ein Log-File erstellt. Diese Datei hat dann freilich stets den Zeitstempel ihrer letzten Aktualisierung.


    Ich möchte nun, per Batch-Datei, den Zeitstempel dieser Server-Datei auslesen und per date und time Befehl in einen, mit dem Server verbundenen, MS-DOS Rechner "verpflanzen".


    Auf den Server selbst habe ich keinen Einfluss, von dort bekomme ich nur diese Log-Datei geliefert, sonst kann ich da nichts machen. Auf dem Host-PC läuft MS-DOS 6.22.


    Ideen? :D

  • Unter UNIX würde ich es mit sed und awk versuchen.Beides sind mächtige Werkzeuge und für solche Aufgaben wie geschaffen. Es gibt eine Portierung nach MS-Dos (Unix4MSDOS oder so ähnlich), auf dem PC habe ich aber nie was damit gemacht. Mein Unix läuft auf einer SUN.


    Gruß, Jochen

  • Zitat

    Ich möchte nun, per Batch-Datei, den Zeitstempel dieser Server-Datei auslesen und per date und time Befehl in einen, mit dem Server verbundenen, MS-DOS Rechner "verpflanzen".


    Was soll den diesen Zeitstempel bekommen


    Bitte genau beschreiben was du machen möchtest.

    Mit freundlichen Grüßen


    fritz

  • Der Server hat eine täglich neu erzeugte info.log Datei

    Der Host (DOS 6.22) greift auf den Server zu und soll den Zeitstempel (Datum und Uhrzeit) der info.log auslesen

    Die ausgelesene Information soll nun mittels der DOS Befehle "date" und "time" die Uhr des Hosts einstellen.


    Ergebnis: Die Systemzeit des Hosts ist nach der Prozedur identisch zum Zeitstempel der info.log Datei

  • Meine batch... settime.bat syncronisiert die Uhr des Hostes mit der des Servers.


    Passt nicht ganz aber ich verstehe nicht den Sinn, die Uhr nach einem Dateizeitstempel zu setzen. Hierdurch ist die Uhr immer falsch gestellt.

    Gut - es wird schon einen Grund geben - dann denke ich noch mal nach. :fp:


    \\DS47 ist der Server


    net time \\ds47 /set /yes

    exit

    Mit freundlichen Grüßen


    fritz

  • Hier ein kleines Assembler-Programm. Einfach in DEBUG abtippen:

    Ergibt das Programm logdate.com, das ziemlich exakt dieses tun sollte ;)

  • Argl, ich hatte noch einen Denkfehler drin. Ich hab mir mit nem Zähler das Datum überschrieben. Ich hab das Programm jetzt umsortiert (und auch getestet), funktioniert.

  • Achja, wenn du mir sagst, wie die Logdatei heißt, kann ich dir auch gerne die fertige Binärdatei geben.


    EDIT: Hier ein Test mit der COMMAND.COM


  • Okay, Ich hab das Programm noch ein wenig erweitert.

    Man kann nun die Datei, nach deren Datum der letzten Änderung es die Systemzeit setzt, einfach als Parameter angeben.

    Ich habe die Binärdatei angehängt.

    Witzigerweise ist das Zip-Archiv größer als die Datei die es enthält :D


  • Ich glaube ich habe das Problem nicht ganz verstanden. Normalerweise hat man einen NTP Server in einem Netzwerk, um Uhrzeiten zu synchronisieren.

    Da es auch einen MS-DOS TCP/IP Stack gibt, wäre das eigentlich auch eine Option, wenn grundsätzlich ein Netzwerk genutzt wird.

    Oder was für eine Verbindung bzw. welches Protokoll wird genutzt zwischen Client und Server ?

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • Passt nicht ganz aber ich verstehe nicht den Sinn, die Uhr nach einem Dateizeitstempel zu setzen. Hierdurch ist die Uhr immer falsch gestellt.

    Gut - es wird schon einen Grund geben - dann denke ich noch mal nach.

    Ganz sicher wird es irgendeinen Grund geben, sowas zu machen. Mich würde aber doch brennend interessieren, welchen.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Offen gestanden ist der mir egal. Aber es macht Spaß, mal wieder ein bisschen was mit Assembler unter DOS zu machen :)

    Und wenn's dann noch jemand bei einem etwas außergewöhnlichen Problem hilft, macht's gleich noch mehr Spaß ^^

  • kpanic

    Du entwickelst dich langsam zu meinem Helden ;)

    Ich hatte den ersten Code gestern noch ausprobiert und, naja, es wollte nicht. Aber jetzt hast du ja schon eine neue Version geschaffen. Ich hatte auch mächtig Spaß mal wieder was in DEBUG reinzukloppen^^

    Ich hoffe, dass ich heute zum testen komme.

  • Hehe, gern geschehen!

    Offen gestanden wäre ich gar nicht auf die Idee gekommen, wenn nicht ThoralfAsmussen gerade seinen Assembler Kurs für den 6502 machen würde.

    So aber hab ich kurz überlegt, und mir gedacht: alles was man dafür braucht bietet DOS eh über INT21h. Man muss es nur kombinieren.

    Naja, und halt die komplett unterschiedlichen Formate von Datum und Uhrzeit umwandeln.

    Ich hatte ja schon mal einen Minitreiber für die RTC des Commodore PC10-III gebastelt, da der originale nicht Y2k-fest ist. Da ist das ähnlich nervig, weil die RTC alles in BCD liefert und einen 4bit-Bus hat, DOS aber für die Systemzeit Hex-Werte erwartet...

  • Hm, offen gestanden würde mich jetzt dann aber doch mal interessieren, was der Sinn und Zweck der Aktion ist ;)

  • Ein Bekannter betreibt eine Wetterstation, die man in Summe als Retro-Anlage bezeichnen kann. Er verweigert sich jedweder Modernisierung, was ihn irgendwie symphatisch macht.


    Sein Zentralrechner ist ein MS-DOS PC, auf dem 6.22 läuft. Seine Daten sendet er einmal am Tag an den Wetterdienst auf deren Server. Ganz klassisch per Dial-in ^^


    Irgendwie geht seit einiger Zeit die RTC des MS-DOS Rechners nach. Also: Sie stellt sich nicht komplett zurück, wie bei einer leeren Batterie, sondern sie geht einfach langsamer. RTC Chip austauschen will er nicht.

    Aufgefallen ist das ganze, als er für einen Tag keine Daten geliefert hat. Seine Station hatte die Daten zwar generiert, aber mit dem falschen Zeitstempel (es war noch der vorherige Tag) versehen.

    So hat er also einmal im Monat immer schön brav die Uhr nachgestellt.


    Mir ist dann aufgefallen, dass bei jedem Server-Abgleich diese .log Datei vom Wetterdienst zu ihm auf den DOS-PC überspielt wird. Mit dem aktuellen Zeitstempel. So kam ich auf die Idee, dass der PC doch seine Uhr nach dieser Datei stellen könnte. Die Uhrzeit stimmt dann zwar nicht, aber der Tag. (Die Uhrzeit der Wetterdaten wird seitens den Wetterdienstes anders synchronisiert.)


    Klar NTP wäre auch eine Idee gewesen, haute nur irgendwie nicht hin. Keine Ahnung, obs an der DOS Kiste oder dem Server lag.

  • Alles klar! Danke für Erklärung. So gesehen ist das mit der Logdatei eine witzige Idee. Und auf ein paar Sekunden / Minuten Zeitdifferenz kommt da vermutlich auch nicht an.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Wenn die Zeit auf dem PC nicht ganz genau geht, ist das eher nicht dem RTC-Chip selbst anzukreiden, sondern der externen Beschaltung. Da ist irgendwo ein 14-komma-ungrad Quartz und diverser Kleinkram, evtl. auch ein Elko, der der konstanten Spannungsversorgung des RTC und der Takterzeugung dient. Da sind gleich zwei verschleißrelevante Bauteile, der Elko und der Quartz. Ja, auch Quarze können altern.

    1ST1