以下几行代码是较大脚本的一部分。 虽然这是运行时创build问题的特定部分。 在初始提示和用户input之后,脚本错误地提供错误: unexpected at this time
。 看了我的代码和一些在线文档后,看起来好像我所做的一切都应该是正确的。 虽然我相信我错过了一些导致这种事情发生的小事。
::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"
编辑:
通过一些更多的戳我发现这个问题是发生在线上:
if /i "%TIMECHANGE%" == "y" (
该问题是由(...):
文本的SET /P
行引起的。 使用引号如下,它将工作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):"
请参阅SO中的delayedexpansion
条目(有很多)来解释为什么set
变量并使用代码块(括号中的行序列)中的新值不会改变该值。
然而,这里简单的解决方案是在if
语句之外移动time
和date
– 设置行,例如
set "postime=%time%" if /i "%TIMECHANGE%" == "y" ( SET /P POSTIME=Please enter new time (HH:MM:SS): ) time "%POSTIME%"