【问题标题】:FOR /R - Using set /a [variable] = [variable] + %%~zAFOR /R - 使用 set /a [variable] = [variable] + %%~zA
【发布时间】:2013-11-03 02:54:05
【问题描述】:

我有一个命令可以循环并设置目录和所有子目录下具有特定扩展名的每个文件的文件大小:

FOR /R "C:\Users" %%G IN (*.*) do set /a size = %size% + %%~zG

我希望命令在循环时使用 %size% + %%!zG,但是当我运行批处理文件时,输出不断将“%size%”设置为 0。我想要所有文件搜索的大小加起来,而不仅仅是保持 0。最后发生的事情是将 %size% 设置为“扫描”的最后一个文件。

由于某种原因,它总是说“0”,并且不会将每个“循环”加起来。谢谢你!感谢所有回复。

【问题讨论】:

  • 请注意,Windows 批号限制为 ~2 GB。您可能会遇到总文件大小超过 2GB 的文件夹。您甚至可能会遇到超过最大值的单个文件。

标签: file batch-file


【解决方案1】:

试试这个:

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

更好的方法。

【讨论】:

  • 谢谢!你是救生员!我喜欢这个网站。
  • +1,绝对是编辑版本:-)
猜你喜欢
  • 2019-04-29
  • 2022-12-23
  • 2023-02-08
  • 2022-12-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
  • 2022-12-02
  • 2017-04-12
相关资源
最近更新 更多