0

这是最奇怪的事情。我不知道 forfiles 是异步的还是什么的,但是这段代码对我来说似乎很容易和明显,并且不起作用:

set a=0
forfiles /S /C "cmd /c if @isdir==FALSE set /a a+=1 & echo !a!"

我想一个简单的计数器。但是,输出的是: 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10

最后a仍然设置为0。

我启用了延迟扩展。为什么这不起作用?

4

1 回答 1

2

看来,forfiles每个文件都需要一个具有新“新鲜和空”环境的新 cmd。1from10是由命令生成的set,如您在此示例中所见:

forfiles /S /C "cmd /v:on /c if @isdir==FALSE set/a a+=1 >nul&echo !a!"
0
0
0
...

为了让它工作,使用更好的for循环:

for /r %%i in (*) do set /a a+=1 &echo !a!
于 2013-05-29T21:49:47.753 回答