批处理 SET /P 命令“?” "was unexpected at this time" 崩溃
In batch SET /P command "?" crashes with "was unexpected at this time"
听起来我不能输入“?”在批处理 (.bat) 脚本提示中:
set /p AREYOUSURE= Are you sure (Y/[N]) ?
它崩溃并显示消息:
? was unexpected at this time.
但是,没有 ""
也能正常工作
注意:我是 运行 Windows 7 64 位。
这不是因为问号,而是因为右括号。您正在块中使用此语句,例如
if foo (
set /p AREYOUSURE= Are you sure (Y/[N]) ?
)
右括号关闭块,然后让解析器在第一个字符块之后绊倒。
您可以转义右括号:
set /p AREYOUSURE= Are you sure (Y/[N]^) ?
或者只使用引号,无论如何我总是推荐:
set /p "AREYOUSURE=Are you sure (Y/[N])?"
对于此类问题,我个人会使用 choice
,但是:
choice /m "Are you sure"
不过,您不能只按 return 那样进行默认选择。
听起来我不能输入“?”在批处理 (.bat) 脚本提示中:
set /p AREYOUSURE= Are you sure (Y/[N]) ?
它崩溃并显示消息:
? was unexpected at this time.
但是,没有 ""
也能正常工作注意:我是 运行 Windows 7 64 位。
这不是因为问号,而是因为右括号。您正在块中使用此语句,例如
if foo (
set /p AREYOUSURE= Are you sure (Y/[N]) ?
)
右括号关闭块,然后让解析器在第一个字符块之后绊倒。
您可以转义右括号:
set /p AREYOUSURE= Are you sure (Y/[N]^) ?
或者只使用引号,无论如何我总是推荐:
set /p "AREYOUSURE=Are you sure (Y/[N])?"
对于此类问题,我个人会使用 choice
,但是:
choice /m "Are you sure"
不过,您不能只按 return 那样进行默认选择。