![它不会在批处理文件的 for 循环中打印变量的增加值](https://linux22.com/image/545725/%E5%AE%83%E4%B8%8D%E4%BC%9A%E5%9C%A8%E6%89%B9%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%E7%9A%84%20for%20%E5%BE%AA%E7%8E%AF%E4%B8%AD%E6%89%93%E5%8D%B0%E5%8F%98%E9%87%8F%E7%9A%84%E5%A2%9E%E5%8A%A0%E5%80%BC.png)
正如您所看到的,我是批处理文件的新手,我在 Windows 2003 环境中编写了一个脚本,用于打印变量计数器的增加值,并且我还应用了 if 条件,该条件在 for 循环中不起作用,尽管在 for 循环之外它显示了正确的变量值。
@echo off
SetLocal EnableDelayedExpansion
cls
set /A counter = 1
for C:\Scripts\LogFiles\ %%a in (*.txt) do ( echo %counter%
set /A counter += 1
echo %%a
if %counter% ==2 (echo test)
)
答案1
延迟扩展要求您使用!
而不是%
来扩展变量。所以应该是!counter!
。
所有形式的环境变量%counter%
在解析命令(对于for
块,这包括完整的块),因此您只能看到变量的值前循环,因为循环运行时不再有变量;只有值。