在批处理SET/P命令"?"中 崩溃与"此时意外"

Ple*_*mor 0 prompt batch-file set

听起来我不能把"?" 在批处理(.bat)脚本中的提示:

set /p AREYOUSURE= Are you sure (Y/[N]) ?
Run Code Online (Sandbox Code Playgroud)

它与消息崩溃:

?这时出人意料.

但是,它没有""

注意:我正在运行Windows 7 64位.

Joe*_*oey 5

这不是因为问号,而是因为右括号.您正在块中使用此语句,例如

if foo (
  set /p AREYOUSURE= Are you sure (Y/[N]) ?
)
Run Code Online (Sandbox Code Playgroud)

右括号关闭块,然后让解析器偶然发现块后面的第一个字符.

您可以转义右括号:

set /p AREYOUSURE= Are you sure (Y/[N]^) ?
Run Code Online (Sandbox Code Playgroud)

或者只是使用引号,我总是建议:

set /p "AREYOUSURE=Are you sure (Y/[N])?"
Run Code Online (Sandbox Code Playgroud)

对于我个人使用的类似问题choice,但是:

choice /m "Are you sure"
Run Code Online (Sandbox Code Playgroud)

但是,只按返回时,您无法进行默认选择.