我正在cmd中使用SET来设置新的环境变量,然后立即使用它进行比较。 提示用户输入一个字符串,然后应检查输入是否与另一个字符串(基本上是密码)匹配。
set /P pwd=pwd: & if %pwd%==pwd (echo yes) else (echo no)
我遇到的问题是似乎未设置该变量,因为无论我是否输入密码,它总是会返回我编号。
我也尝试过将两个命令分隔为一个.bat文件,但这也不起作用。
答案 0 :(得分:1)
您的代码不起作用,因为它在一行上。请参阅set /?
,setlocal /?
,for /?
和cmd /?
,以了解有关延迟扩展的讨论。
CMD逐行处理批处理文件,并在读取行时填写所有%var%
。这就是MSDos的工作方式,并且CMD需要兼容。延迟扩展变量在不使用时不读取时即被扩展。由于!var!
是合法的MSDos名称(如%!var!%
),因此您必须选择新的行为(无论如何在1993年还是新行为)。