批处理文件“:此时意外”
Batch File ": unexpected at this time"
以下代码行是更大脚本的一部分。虽然这是在 运行 时产生问题的特定部分。在初始提示和用户输入后,脚本会出错并提供错误 : 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" (
请参阅 SO 中的 delayedexpansion
条目(有很多)以解释为什么 set
设置变量并在代码块(带括号的行序列)中使用新值的原因'似乎没有更改值。
然而,这里的简单解决方案是将 time
和 date
设置行移到 if
语句之外,例如
set "postime=%time%"
if /i "%TIMECHANGE%" == "y" (
SET /P POSTIME=Please enter new time (HH:MM:SS):
)
time "%POSTIME%"
问题是由带有 (...):
文本的 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):"
以下代码行是更大脚本的一部分。虽然这是在 运行 时产生问题的特定部分。在初始提示和用户输入后,脚本会出错并提供错误 : 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" (
请参阅 SO 中的 delayedexpansion
条目(有很多)以解释为什么 set
设置变量并在代码块(带括号的行序列)中使用新值的原因'似乎没有更改值。
然而,这里的简单解决方案是将 time
和 date
设置行移到 if
语句之外,例如
set "postime=%time%"
if /i "%TIMECHANGE%" == "y" (
SET /P POSTIME=Please enter new time (HH:MM:SS):
)
time "%POSTIME%"
问题是由带有 (...):
文本的 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):"