Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

fehler finden

Frage Entwicklung Batch & Shell

Mitglied: neuhier

neuhier (Level 1) - Jetzt verbinden

13.10.2006, aktualisiert 23.10.2006, 3412 Aufrufe, 3 Kommentare

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.
Mitglied: neuhier
13.10.2006 um 16:15 Uhr
Danke habe meinen Fehler selber entdeckt. Bei der Variable _localdate wird der Wert date /t zugewiesen und nicht das aktuelle Datum. (wie ich fälschlicherweise dachte)
Erst bei der Ausgabe über echo wurde die zuweisung date /t in das aktuelle datum umgewandelt.

der richtige code sieht dann halt so aus: if %_answer% == %DATE% (
goto _richtig
) else (
goto _falsch
)

Eine neue Frage stellt sich mir, wie kann ich denn nun Vergleich ob eine Eingabe kein datum ist?
Bitte warten ..
Mitglied: Biber
19.10.2006 um 20:37 Uhr
Moin neuhier,

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
Bitte warten ..
Mitglied: Biber
23.10.2006 um 21:10 Uhr
Tja,
neuhier ist jetzt weghier, wie es aussieht...

Beitrag geschlossen.
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Drucker und Scanner
Laserjet 3600N Fehler PCL Error (1)

Frage von grillinator95 zum Thema Drucker und Scanner ...

SAN, NAS, DAS
S.M.A.R.T Fehler QNAP (11)

Frage von Hendrik2586 zum Thema SAN, NAS, DAS ...

Heiß diskutierte Inhalte
Erkennung und -Abwehr
Virenschutz - Meinungen (28)

Frage von honeybee zum Thema Erkennung und -Abwehr ...

Windows 10
Welches OS für Firmengeräte? (18)

Frage von MarkusVH zum Thema Windows 10 ...

Netzwerke
Abisolierwerkzeug (18)

Frage von SarekHL zum Thema Netzwerke ...

Exchange Server
SBS2011: POP3-Connector 10 MB Grenze Email Benachrichtigung (17)

Frage von bogi1102 zum Thema Exchange Server ...