批处理中的用户输入在 Windows 8 中不起作用,还是我错了?

批处理中的用户输入在 Windows 8 中不起作用,还是我错了?
@ECHO OFF
CLS

SET ad =
SET /p ad = Do you want to [A] Allow or [D] Deny? 
ECHO "%ad%"

我输入A并按下Enter,得到的输出是:

Do you want to [A] Allow or [D] Deny?
""

为什么它不起作用?

答案1

您不是在设置%ad%。您正在设置%ad %

有些语言对空格的要求比其他语言更高。cmd.exe脚本语言就是其中之一——设置变量的语法是set name=value,如果你在 周围添加空格=,它们就会变成变量名称和值的部分

如果你只为 Windows 7/8 编写脚本,我强烈建议你学习 PowerShell。cmd.exe 使用的语言是可怕

答案2

据我所知,Windows 8 中的命令处理器与 Windows 7 中的命令处理器没有变化

等号之前的所有内容都是变量名的一部分。因此,在这种情况下,您的变量名实际上"ad "没有引号。您可以使用set不带任何参数的命令查看当前环境变量 - 这对于调试非常有用。

相关内容