fehler finden
Guten Tag,
vieleicht ist mein Fehler auch zu simple. Naja ich bin eben nicht der beste. Ich wollte eigentlich nur eine Funktion testen um weiter an einem anderen Programm schreiben zu können.
Ich weis hierbei nicht warum es der Fall ist was es tut. Bei der if Anweisung springt es bei jedem Wert nach goto "_richtig" was eigentlich nicht soll. Kann es sein das die shell hierbei zwischen String und date nicht unterscheiden kann?
@echo off
title Ich bin ein Testprogramm
setlocal
set _localdate= date /t
rem Hauptprogramm
echo Bitte geben Sie an, welches Datum heute ist!
echo.
set /p _answer="In dd|mm|yyyy: "
if %_answer% == %_localdate% (
goto _richtig
) else (
goto _falsch
)
:_richtig
echo.
echo Richtig heute ist der %_answer%
pause
goto _end
:_falsch
echo.
echo Falsch heute ist der %DATE%.
pause
goto _end
:_end
endlocal
Danke sehr für eure Hilfe.
vieleicht ist mein Fehler auch zu simple. Naja ich bin eben nicht der beste. Ich wollte eigentlich nur eine Funktion testen um weiter an einem anderen Programm schreiben zu können.
Ich weis hierbei nicht warum es der Fall ist was es tut. Bei der if Anweisung springt es bei jedem Wert nach goto "_richtig" was eigentlich nicht soll. Kann es sein das die shell hierbei zwischen String und date nicht unterscheiden kann?
@echo off
title Ich bin ein Testprogramm
setlocal
set _localdate= date /t
rem Hauptprogramm
echo Bitte geben Sie an, welches Datum heute ist!
echo.
set /p _answer="In dd|mm|yyyy: "
if %_answer% == %_localdate% (
goto _richtig
) else (
goto _falsch
)
:_richtig
echo.
echo Richtig heute ist der %_answer%
pause
goto _end
:_falsch
echo.
echo Falsch heute ist der %DATE%.
pause
goto _end
:_end
endlocal
Danke sehr für eure Hilfe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 42133
Url: https://administrator.de/contentid/42133
Ausgedruckt am: 25.11.2024 um 12:11 Uhr
3 Kommentare
Neuester Kommentar
Moin neuhier,
Falls es noch eine offene Frage sein sollte:
1. Du kannst mit reinen Batchmitteln nicht auf "ist gültiges Datum" prüfen.
Da es im Batch keine unterschiedlichen Datentypen gibt ...alles ist Text, String, Prosa....
2. Du kannst natürlich eine "befreundete" Skriptsprache wie JScript oder VBSkript befragen - da gibt es Datums-Datentypen und auch jeweils eine isdate-Funktion.
Das kostet Dich maximal 3 Zeilen im Batch (Snippet schreiben, Snippet aufrufen und Snippet löschen).
3. Aber auch das bringt Dich nur begrenzt voran - denn dann weißt Du zwar, ob Dein Datum gemäß den isDate()-Konventionen von VBS gültig ist, aber nicht, ob es in Deinem Sinne formal (Tage und Monate zweistellig, Jahr vierstellig..) und fachlich (ist der "1.8.1457" oder der "22.2.2465" ein erlaubtes Datum?) gültig ist.
Bei Datumsprüfungen kommst Du i.d.R. nicht umhin, auf Ober/Untergrenzen zu prüfen.
Dafür ist Batch das denkbar ungeeigneteste Werkzeug.
Wenn Du Dich in das Thema Batch ein bisschen reinfummeln willst, ist so eine Datumswert-Zerlegung in TT, MM und YYYY und die anschließende Prüfung "Ist denn auch der Tag größer gleich 1 und kleiner gleich 29, wenn Monat gleich Februar und kein Schaltjahr"... sehr hilfreich. Zum Üben. Für eine ernstzunehmende Anwendung gibt es bessere Werkzeuge.
Gruß
Biber
Eine neue Frage stellt sich mir, wie kann ich denn nun Vergleich ob eine Eingabe kein datum ist?
Falls es noch eine offene Frage sein sollte:
1. Du kannst mit reinen Batchmitteln nicht auf "ist gültiges Datum" prüfen.
Da es im Batch keine unterschiedlichen Datentypen gibt ...alles ist Text, String, Prosa....
2. Du kannst natürlich eine "befreundete" Skriptsprache wie JScript oder VBSkript befragen - da gibt es Datums-Datentypen und auch jeweils eine isdate-Funktion.
Das kostet Dich maximal 3 Zeilen im Batch (Snippet schreiben, Snippet aufrufen und Snippet löschen).
3. Aber auch das bringt Dich nur begrenzt voran - denn dann weißt Du zwar, ob Dein Datum gemäß den isDate()-Konventionen von VBS gültig ist, aber nicht, ob es in Deinem Sinne formal (Tage und Monate zweistellig, Jahr vierstellig..) und fachlich (ist der "1.8.1457" oder der "22.2.2465" ein erlaubtes Datum?) gültig ist.
Bei Datumsprüfungen kommst Du i.d.R. nicht umhin, auf Ober/Untergrenzen zu prüfen.
Dafür ist Batch das denkbar ungeeigneteste Werkzeug.
Wenn Du Dich in das Thema Batch ein bisschen reinfummeln willst, ist so eine Datumswert-Zerlegung in TT, MM und YYYY und die anschließende Prüfung "Ist denn auch der Tag größer gleich 1 und kleiner gleich 29, wenn Monat gleich Februar und kein Schaltjahr"... sehr hilfreich. Zum Üben. Für eine ernstzunehmende Anwendung gibt es bessere Werkzeuge.
Gruß
Biber