有必要阻止bat文件并遇到问题。带有循环的代码,其中有一个条件。如果满足条件,则分配一个变量。我希望在 echo qwe 然后 ewq 中看到,但最初我只看到循环外的赋值(2 次)。
@echo off
SetLocal EnableExtensions
Set a=q
Set C=1 3 2
FOR %%x IN (%C%) DO (
IF %%x==1 (
Set a=qwe
echo %a%
)
IF %%x==2 (
Set a=ewq
echo %a%
)
)
pause
如果我删除初始分配 Set a=q,然后我得到“回显命令输出模式被禁用”,就是这样。如何分配和访问变量?
必须启用
EnableDelayedExpansion
和使用!a!
。当 EnableDelayedExpansion 关闭(未设置)时,变量的值在块启动时是固定的,对它们的任何更改都将被忽略。即使它被前一行以某种方式改变了。
EnableDelayedExpansion开启时,变量的值同样是固定的,如果使用百分号则访问时获取固定值,如果使用感叹号则改变。
要解析的代码:
必须预见到这样的事件。
这是正确的代码: