2016-05-11 25 views
0

Mein Code ist unter. Es sollte ein einfacher Code sein, um nach der Uhrzeit zu suchen, und es mit zwei verschiedenen Zeiten vergleichen, in denen ich den Computer des Kindes für die Nacht ausschalten möchte. Ich habe ein extrem grundlegendes Verständnis von Kodierung, da ich mit Kodierung, die sehr extrem war, nichts wirklich gemacht habe. Ich dachte, ich würde das ausprobieren, aber ich bin mir nicht ganz sicher, was ich im Code falsch gemacht habe, ich bin in der Lage, die verschiedenen Schritte zu durchlaufen, bis ich die if-Anweisung erreiche: if %yesno% EQU y ( .... und alles andere danach, heißt es, aus irgendeinem Grund, dass die if-Anweisung zu diesem Zeitpunkt nicht erwartet wurde und dann das Fenster sofort schließt. Ich war in der Lage, einen sehr schnellen Bildschirm abzuschießen. Ich habe meinen gesamten Code auf mehrere Google-Suchen auf verschiedenen Teilen des Codes basiert. Wenn jemand helfen kann, wäre das sehr nützlich.Ich schreibe ein kleines Programm, um einen Computer zu einer bestimmten Zeit herunterzufahren. Etwas falsch, obwohl

(Screenshot Referenz) https://i.gyazo.com/1449d3d48279b64411d982d27ec0940a.png

@echo off 

:questions 
cls 
set /p start=[Shutdown time (The hour of shutdown, do not add minutes):] 
set /p 1ampm=[am/pm:] 
cls 
set /p end=[Enter the time you want the computer to be available again for use(The hour of shutdown, do not add minutes):] 
set /p 2ampm=[am/pm:] 
cls 
echo Loading.... 
PING 1.1.1.1 -n 1 -w 2000 >NUL 
cls 

set /p yesno=[The time you selected the computer to remain off is from %start% - %end% , is this correct, y/n?] 
cls 
goto :yn 

:yn 
if %yesno% EQU y (
    goto :1timecorrect 
) if %yesno% EQU n (
    goto :questions 
) else (
    goto :questions 
) 

:1timecorrect 
if %1ampm% EQU am (
    goto :2timecorrect 
) if %1ampm% EQU pm (
    set realstart=%start%+12 
    goto :2timecorrect 
) else (
    cls 
    echo you did not enter whether or not the start time is am or pm 
    goto :questions 
) 
:2timecorrect 
if %2ampm% EQU am (
    goto :Begining 
) if %2ampm% EQU pm (
    set realend=%end%+12 
    goto :Begining 
) else (
    cls 
    echo you did not enter whether or not the start time is am or pm 
    goto :questions 
) 

:Begining 
set mytime=%time:~0,2% 

:Start 
if %mytime% GEQ %realstart% (
    cls 
    echo time has expired, time to go to bed. 
    shutdown -s -f -t 60 -c "Your computer is about to be shut down in 1 minute" 
) else (
    if %mytime% LEQ %realend% (
     echo time has expired, time to go to bed. 
     shutdown -s -f -t 60 -c "Your computer is about to be shut down in 1 minute" 
    ) else (
     cls 
     echo This program is Opperating correctly 
     PING 1.1.1.1 -n 1 -w 600000 >NUL 
     goto :Start 
    ) 
) 
+0

Wenn Sie das nächste Mal einen Fehler betrachten möchten, können Sie 'pause' verwenden. Dadurch wird das Programm angehalten und auf Ihre Eingabe gewartet. Sie können 'Logit' auch verwenden, um die Ergebnisse Ihres Programms in eine Datei zu schreiben, in der Sie die Ergebnisse der Ausführung speichern können. Dies kann nützlich sein, wenn Ihr Kind Computerkenntnisse besitzt und herausfinden kann, wie es das Funktionieren des Skripts verhindert. – Knells

Antwort

0

Da alles unter if %mytime% GEQ ~start nur ausgeführt werden, wenn mytime ist höher als beginnen, alles unter dieser Linie in Klammern sein soll. Wenn Ihre if-Anweisung über eine else verfügt, müssen die erste schließende Klammer, else, und die letzte öffnende Klammer in derselben Zeile stehen.

@echo off 

set start=11 
set end=19 

set mytime=%time:~0,2% 

:Start 
if %mytime% GEQ %start% (
    if %mytime% LEQ %end% (
     shutdown -s -f -t 60 -c "Your computer is about to be shut down in 1 minute" 
    ) else ( 
     echo This program is Operating correctly 
     sleep 1800 
     goto :Start 
    ) 
)