@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
不带任何参数的命令查看当前环境变量 - 这对于调试非常有用。