Fireplace April 2026
TeamViewer Motive 4

Herunterfahrscript

smile_hen

Cadet 3rd Year
Registriert
März 2014
Beiträge
50
Hallo,
kann mir jemand sagen warum das Script nicht mehr funktioniert?
Es lief problemlos bist gestern oder vorgestern.
Es startet beim Herunterfahren und macht alle drei Tage eine Komplettsicherung.
Fehler liegt im ersten Teil.


@echo off
echo DATENSICHERUNG
set /a Datum=%date:~0,2% / 1
set /a Prueff = %Datum% %% 3
ECHO %Prueff%
if %Prueff% == 0 goto :Sicherung
goto KeineSicherung

:Sicherung
Echo Sicherung
XCOPY D:\*.* F:\*.* /S /E /R /Y /D /V /H
goto:eof

:KeineSicherung
Echo Keine Sicherung
echo.
goto:eof

Vielen Dank für eure Hilfe.
 
if %Prueff% == 0 goto :Sicherung
goto KeineSicherung

:Sicherung

Versuch mal ohne Doppelpunkt oben
 
Genau, der Doppelpunkt markiert im Batch die Sprungmarke ist aber bei Goto nicht anzugeben.
 
Hi,

vielen Dank für die schnelle Antwort. Nein das brachte nichts - die Fehlermeldung ist:

C:\>ttt.bat
DATENSICHERUNG
Ungültige Zahl. Numerische Konstanten sind entweder dezimale (17),
hexadezimale (0x11) oder oktale (021) Zahlen.
Ungültige Zahl. Numerische Konstanten sind entweder dezimale (17),
hexadezimale (0x11) oder oktale (021) Zahlen.
ECHO ist ausgeschaltet (OFF).
"goto" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

Das Script lieft am 06.03 noch problemlos - das finde ich schon sehr komisch.
 
Das kommt mir bekannt vor...
Problem: Bei 08 kommt deshalb eine Fehlermeldung, weil im oktalen System gibt es kein 08 (00 bis 07)
Da du damit rechnen willst, nimmt CMD an, dass du im okalen System rechnen willst, weil ja eine Null davor steht.
Du musst vorher abfragen:
if %Datum% == 08 set datum=8
if %Datum% == 09 set datum=9
 
Zuletzt bearbeitet:
Ok, aber die Tage aus dem Datum sollten ja im Dezimalsystem vorliegen.
 
Hier ein Beispiel warum es nicht geht :-)

set /a erg=08+08
echo %erg%
pause

Die vorangestellte Null gibt an, dass es im oktalen System berrechnet werden soll, deshalb kommt hier eine Fehlermeldung
Ergänzung ()

@echo off
echo DATENSICHERUNG
set Datum=%date:~0,2%
if %Datum%==08 set datum=8
if %Datum%==09 set datum=9
set /a Prueff = %Datum% %% 3
ECHO %Prueff%
if %Prueff% == 0 goto Sicherung
goto KeineSicherung

:Sicherung
Echo Sicherung
ROBOCOPY D:\*.* F:\*.* /MIR
goto:eof

:KeineSicherung
Echo Keine Sicherung
echo.
goto:eof
 
Super, vielen Dank. Hat wirklich nie an Tagen mit einer 8/9 funktioniert. Danke für die schnelle Hilfe.
 
Zuletzt bearbeitet:
Zurück
Oben