Batch file 在批处理设置/P命令中&引用;与“碰撞”;在这个时候是出人意料的”;

Batch file 在批处理设置/P命令中&引用;与“碰撞”;在这个时候是出人意料的”;,batch-file,set,prompt,Batch File,Set,Prompt,听起来我不能在批处理(.bat)脚本的提示中放入“?”: 它会崩溃,并显示以下消息: ??在这个时候是出乎意料的 但是,它在没有“”的情况下运行良好 注意:我使用的是64位Windows 7。这不是因为问号,而是因为右括号。您正在块中使用此语句,例如 if foo ( set /p AREYOUSURE= Are you sure (Y/[N]) ? ) 右括号关闭块,然后让解析器在块后的第一个字符上绊倒 可以对右括号进行转义: set /p AREYOUSURE= Are you sur

听起来我不能在批处理(.bat)脚本的提示中放入“?”:

它会崩溃,并显示以下消息:

??在这个时候是出乎意料的

但是,它在没有“”的情况下运行良好


注意:我使用的是64位Windows 7。

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

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 /m "Are you sure"

但是,按回车键时不能进行默认选择。

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

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 /m "Are you sure"
但是,按return键时不能进行默认选择。

我建议您在主题标题中添加“in SET/p command”!“批处理脚本中的提示”是一个完全不同的东西…我建议您在主题标题中添加“在SET/P命令中”!“批处理脚本中的提示”是一个完全不同的东西。。。