这是对 David Ruhmann 与上述“验证输入”部分相关的代码进行改进的建议分析:
测试菜单中的特殊字符很有效,但以下字符“^&<”除外。当每个都提交输入时,程序关闭。
set "Input=%Input:"=%"
set "Input=%Input:^^=%"
set "Input=%Input:>=%"
set "Input=%Input:<=%"
set "Input=%Input:^&=%"
set "Input=%Input:|=%"
set "Input=%Input:(=%"
set "Input=%Input:)=%"
:: Equals are not allowed in variable names
set "Input=%Input:^==%"
转义 ^ 和 & 有效,但是解析“<”和“>”时会发生一些非常奇怪的事情(转义这些似乎不起作用)。如果我们颠倒上述修改中两个语句的顺序,我们会发现“<”有效,但现在“>”无效。
但是,用“<”向下移动第二个语句,两个重定向字符都可以工作,但现在“)”不行!
set "Input=%Input:"=%"
set "Input=%Input:^^=%"
set "Input=%Input:>=%"
set "Input=%Input:^&=%"
set "Input=%Input:|=%"
set "Input=%Input:(=%"
set "Input=%Input:)=%"
set "Input=%Input:<=%"
:: Equals are not allowed in variable names
set "Input=%Input:^==%"
在这里可以找到另一个很棒的批处理菜单教程。