Hallo,
gut das du mir deine datum.tmp gezeigt hast, dadran lag’s, deshalb funktioniert es nicht. Aber ich habe es umgeschrieben und sende es hier als Antwort zu diesem posting.
Ich habe win98, dort lief es perfekt, also müßte es nach der änderung auch auf win95 laufen. Win nT habe ich keines.
Gruß
olala
Aber die Batch funzt leider nicht. Unter Win95 kommt zum
Schluß „erforderlicher Parameter fehlt“ und unter WinNT
„Syntaxfehler“.
In der temporär angelegten Datum.TMP steht folgendes:
Aktuelles Datum: So, 28.01.2001
Neues Datum (TT.MM.JJ):
Deshalb ging es nicht. Es suchte in der datum.tmp mit find nach 01- und -28- aber dort steht ja bei dir 28. und .01.
Und außerdem habe ich noch ein paar Syntax-Fragen:
find „-%4“ datum.tmp > nul
Was genau macht der FIND-Befehl und was bedeutet das Minus vor
bzw. hinter der Umgebungsvariablen?
Wie oben schon gesagt, das programm sucht in der Datei datum.tmp nach dem String -%4, also in diesem Fall durch die for Schleife nacheinander nach -2000 -2001 -2002 usw.
if not errorlevel==1 if errorlevel==0 set jjjj=%4
Warum fragst Du den Errorlevel nach ungleich 1 und gleich 0?
Hätte nicht bloß der Nullvergleich das selbe Ergebnis?
Nein. Nur nach 0 geht nicht, weil es immer x oder größer bedeutet bei errorlevelabfragen.
if errorlevel==0 bedeutet im Klartext: Ist die Fehlernummer null oder größer, d.h. auch bei error 35 wäre der Vergleich positiv.
echo.|date > datum.tmp
Was bedeutet das .| zwischen Echo und Date?
Mit echo. übergebe ich einen Zeilenvorschub an date.
Hätte ich nur date > datum.tmp würde das Programm an der Stelle auf eine Eingabe warten.
for %%n in (So Mo Di Mi Do Fr Sa) do call %0 %%n
Was macht CALL in diesem Fall? Ich benutze CALL bisher nur, um
aus einer Batch eine zweite aufzurufen.
So ist es auch hier, nur die zweite batch gibt es nicht, das Programm ruft sich rekursiv selbst auf, %0 ist immer der eigene Name eines batch-Programms. In dem fall heißt das, das programm, ich nenne es mal prob.bat wird einfach mit dem aufruf von prog.bat gestartet.
Danach ruft es sich durch die for-schleife selbst nacheineder mit
call prog.bat So
call prog.bat Mo
call prog.bat Di
…
auf. Desgleichen für die andern for-schleifen.