1

Les lignes de code suivantes font partie d'un script plus volumineux. Bien que ce soit la section spécifique créant des problèmes lors de l'exécution. Après l'invite initiale et l'entrée de l'utilisateur, le script ne fournit pas l'erreur : unexpected at this time. Après avoir regardé mon code et une documentation en ligne, j'ai l'impression que tout ce que j'ai fait devrait être correct. Bien que je suis sûr que je manque quelque chose de mineur qui cause cela.Fichier de traitement par lots ": inattendu à ce moment"

::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:
Grâce à un peu plus farfouillé je trouve que la question est INTERVENUES sur la ligne:

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

Quelle ligne spécifique? – jmoon

+0

Juste exécuté un test et il est à la ligne: si/i "% TIMECHANGE%" == "y" ( – TGutmann87

+1

Je soupçonne que le problème peut être que ce code est lui-même inclus dans le cadre d'un bloc de code, où le ')' utilisé dans le cadre des instructions 'set' fermera un niveau de parenthèse. Essayez de remplacer ')' dans 'set's par' ^) ' – Magoo

Répondre

0

Le problème est causé par les SET /P lignes avec le texte (...):. Utilisez des guillemets comme suit et il travaillera 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

Voir delayedexpansion entrées dans SO (il y a beaucoup) pour l'explication des raisons pour lesquelles set Le fait de taper une variable et d'utiliser la nouvelle valeur dans un bloc de code (séquence de lignes entre parenthèses) ne semble pas changer la valeur.

La solution facile ici est cependant de déplacer les time et date lignes -Mise en dehors des déclarations if, par exemple

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

Cela se produit directement à l'instruction if. Je ne suis même pas en mesure d'accéder à la ligne qui définit% POSTIME% – TGutmann87