1

Die folgenden Codezeilen sind Teil eines größeren Skripts. Obwohl dies der spezifische Abschnitt ist, der beim Ausführen Probleme verursacht. Nach der ersten Eingabeaufforderung und der Benutzereingabe gibt das Skript Fehler aus und gibt den Fehler : unexpected at this time aus. Nachdem ich meinen Code und einige Online-Dokumente angeschaut habe, sieht es so aus, als ob alles, was ich getan habe, korrekt sein sollte. Obwohl ich sicher bin, dass mir etwas Minderes fehlt, das dies verursacht.Batch-Datei ": zu diesem Zeitpunkt unerwartet"

::Changes Date/Time 
echo The current date and time is %date% %time% 
SET /P TIMECHANGE=Would you like to change the time (y:Yes): 

if /i "%TIMECHANGE%" == "y" (
    SET /P POSTIME=Please enter new time (HH:MM:SS): 
    time "%POSTIME%" 
) 

SET /P DATECHANGE=Would you like to change the date (y:Yes): 

if /i "%DATECHANGE%" == "y" (
    SET /P POSDATE=Please enter new date (MM-DD-YYYY): 
    date "%POSDATE%" 
) 

tzutil /s "Eastern Standard Time" 

Edit:
Durch einige weitere Stochern fand ich, dass das Problem auf der Leitung auftreten:

if /i "%TIMECHANGE%" == "y" (
+0

Welche bestimmte Zeile? – jmoon

+0

Gerade lief ein Test und es ist an der Linie: wenn/i "% TIMECHANGE%" == "y" ( – TGutmann87

+1

Ich vermute, dass das Problem möglicherweise, dass dieser Code selbst als Teil eines Codeblocks eingeschlossen ist, wo Das '' '', das als Teil der 'set' Anweisungen verwendet wird, schließt eine Klammerebene. Versuchen Sie, ')' in den '' '' '' '' ' – Magoo

Antwort

0

Das Problem wird durch die SET /P Linien mit dem (...): Text verursacht wird. Verwenden Sie Anführungszeichen wie folgt und es wird funktionieren SET /P "VAR=TEXT:":

SET /P "TIMECHANGE=Would you like to change the time (y:Yes):" 

SET /P "POSTIME=Please enter new time (HH:MM:SS):" 

SET /P "DATECHANGE=Would you like to change the date (y:Yes):" 

SET /P "POSDATE=Please enter new date (MM-DD-YYYY):" 
1

Siehe delayedexpansion Einträge in SO (es sind viele) für die Erklärung, warum set Wenn Sie eine Variable auswählen und den neuen Wert in einem Codeblock (eingeklammerte Zeilenfolge) verwenden, scheint der Wert nicht geändert zu werden.

Die einfache Lösung hier ist jedoch die time und date -Einstellung Linien außerhalb der if Aussagen zu bewegen, zB

set "postime=%time%" 
if /i "%TIMECHANGE%" == "y" (
    SET /P POSTIME=Please enter new time (HH:MM:SS): 
) 
time "%POSTIME%" 
+0

Dies passiert direkt bei der if-Anweisung. Ich bin nicht einmal in der Lage, zu der Zeile, die% POSTIME% setzt – TGutmann87

Verwandte Themen