我有一个命令可以循环并设置目录和所有子目录下具有特定扩展名的每个文件的文件大小:
FOR /R "C:\Users" %%G IN (*.*) do set /a size = %size% + %%~zG
我希望命令在循环时使用 %size% + %%!zG,但是当我运行批处理文件时,输出始终将“%size%”设置为 0。我想要所有文件搜索到的大小相加,而不仅仅是保持 0。最后发生的情况是 %size% 设置为最后一个“扫描”的文件。
出于某种原因,它不断地显示“0”,并且不会将每个“循环”相加。谢谢你!感谢所有回复。
最佳答案
试试这个:
setlocal enabledelayedexpansion
FOR /R "C:\Users" %%G IN (*.*) do set /a size = !size! + %%~zG
在 for 循环中,您无法正常引用环境变量。
编辑:
刚刚意识到我们正在使用set/a
!!!!!!!!
FOR /R "C:\Users" %%G IN (*.*) do set /a size+=%%~zG
更好的方法。
关于file - FOR/R - 使用 set/a [变量] = [变量] + %%~zA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19749372/