Schani: DOS Batch Programmierung

Hallo zusammen,

habe eine Frage für Leute die sich im DOS auskennen.
Ich will eine Datei mit der Urzeit speichern, dazu mache ich folgendes:

SET x=%time%  // Bsp: x = 12:12:12,34

copy xxx.log %x%.log

Das Problem ist, DOS akzeptiert keinen Dateinamen mit Doppelpunkten, d.h. ich müsste die Doppelpunkte durch einen Buchstaben ersetzen, gibt es da in DOS irgend eine Möglichkeit dazu.

// Ergebnis sollte z.B: 12x12x12x34.log sein

Ciao
Schani

  1. Hi there!

    SET x=%time%  // Bsp: x = 12:12:12,34

    %time% wurde aber voher von jemand anderem gesetzt, oder?

    Das Problem ist, DOS akzeptiert keinen Dateinamen mit Doppelpunkten, d.h. ich müsste die Doppelpunkte durch einen Buchstaben ersetzen, gibt es da in DOS irgend eine Möglichkeit dazu.
    // Ergebnis sollte z.B: 12x12x12x34.log sein

    Ich koennte mir vorstellen, dass man ueber eine abenteuerliche Konstruktion mit 'choice' zum Ziel kommt. Leider hab ich grad NT laufen, wo es scheinbar kein choice gibt, deshalb kann ich jetzt nicht nachschauen und konkreter drueber nachdenken. DOS will ich jetzt nicht extra starten. ;-)

    Welche DOS-Version verwendest Du denn?

    So long

  2. Hallo,

    Ich will eine Datei mit der Urzeit speichern, dazu mache ich folgendes:
    SET x=%time%  // Bsp: x = 12:12:12,34
    copy xxx.log %x%.log

    wäre es denn möglich die Uhrzeiten in einer Datei zu haben?
    z.B. echo %time%>>time.log
    oder wäre es möglich fortlaufende Dateien, 1., 2. usw., zu erzeugen und
    damit die aktuelle Zeit der Erstellung der jeweiligen Datei zu haben?
    Komfortabler Programmieren lässt sich mit 4dos wenn sowas eingesetzt werden kann.

    Welche Aufgabe soll das Ganze denn überhaupt erfüllen?

    Grüsse

    Cyx23

    1. echo %time%>time.log mit nur einem ">", sonst wird die Datei immer länger (wegen Anhängen).

      Folgendes benötigt qbasic.exe (aus MSDOS6):
      zuerst wird %time% in time.log gespeichert, die wird dann ausgelesen
      dabei werden zuerst alle nicht-Zahlen in %time% überlesen
      danach werden nicht-Zahlen durch "_" ersetzt
      zum Schluß werden die 2 DOS-Zeilenumbruchzeichen abgeschnitten
      (die ja auch durch "_" ersetzt wurden)
      dann wird timeset.bat erstellt, die dann die set-Variable x erzeugt.

      Inhalt von formtime.bas (erstellt Datei timeset.bat):
      t$ = ""
      a$ = ""
      n = 0
      OPEN "time.log" FOR INPUT AS #1
      WHILE NOT EOF(1)
        x$ = INPUT$(1, 1)
        a$ = x$
        IF x$ < "0" OR x$ > "9" THEN
          IF n = 0 THEN x$ = "" ELSE x$ = "_"
        ELSE
          n = 1
        END IF
        t$ = t$ + x$
      WEND
      CLOSE
      t$ = LEFT$(t$, LEN(t$) - 2)     '2 ersetzte Zeilenumbruchzeichen abschneiden
      OPEN "timeset.bat" FOR OUTPUT AS #1
      PRINT #1, "set x=" + t$      ' + RIGHT$(a$, 2)
      CLOSE
      SYSTEM

      Inhalt von erstelle.bat:
      @echo off
      echo %time%>time.log
      qbasic.exe /run formtime.bas
      timeset.bat
      copy xxx.log %x%.log

      Aufruf mit: erstelle.bat