CMD设置变量并立即使用

时间:2019-04-08 06:02:16

标签: windows batch-file cmd

我正在cmd中使用SET来设置新的环境变量,然后立即使用它进行比较。 提示用户输入一个字符串,然后应检查输入是否与另一个字符串(基本上是密码)匹配。

set /P pwd=pwd: & if %pwd%==pwd (echo yes) else (echo no)

我遇到的问题是似乎未设置该变量,因为无论我是否输入密码,它总是会返回我编号。

我也尝试过将两个命令分隔为一个.bat文件,但这也不起作用。

1 个答案:

答案 0 :(得分:1)

您的代码不起作用,因为它在一行上。请参阅set /?setlocal /?for /?cmd /?,以了解有关延迟扩展的讨论。

CMD逐行处理批处理文件,并在读取行时填写所有%var%。这就是MSDos的工作方式,并且CMD需要兼容。延迟扩展变量在不使用时不读取时即被扩展。由于!var!是合法的MSDos名称(如%!var!%),因此您必须选择新的行为(无论如何在1993年还是新行为)。