You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AppleScript中data size命令始终返回0字节问题咨询

为什么Finder脚本获取应用程序data size返回0字节?

我尝试对应用程序、文件夹和文件执行data size命令,但每次返回结果均为0字节。执行的脚本如下:

tell application "Finder"
    set appPath to POSIX file "/Applications/Slack.app"
    set appSize to data size of appPath as application
    display dialog "The application size is " & appSize & " bytes."
end tell

但在该应用程序的详情信息中,显示其大小为444.6 MB,请问为何会出现这种情况?


问题根源

  • Finder的data size属性仅对单个文件有效,对于.app这种应用程序包(本质是特殊格式的文件夹),直接读取data size只会拿到文件夹本身的元数据大小,而非包内所有文件的总容量,所以返回0字节。
  • 脚本里的as application转换并没有触发Finder递归计算包内内容的逻辑,因此无法得到真实大小。

两种正确的解决方法

方法1:用Finder遍历所有内容求和

让Finder遍历应用包内的所有文件和子文件夹,累加每个项目的data size:

tell application "Finder"
    set appItem to alias "/Applications/Slack.app"
    set totalSize to 0
    repeat with fileItem in entire contents of appItem
        set totalSize to totalSize + (data size of fileItem)
    end repeat
    display dialog "The application size is " & totalSize & " bytes."
end tell

方法2:调用系统du命令(更高效)

直接用系统自带的du命令计算目录总大小,比Finder遍历速度更快:

set appPath to "/Applications/Slack.app"
set totalSize to do shell script "du -sk " & quoted form of appPath & " | awk '{print $1 * 1024}'"
display dialog "The application size is " & totalSize & " bytes."

说明:du -sk返回的是千字节单位的数值,乘以1024转换为字节后,结果和Finder信息面板显示的大小一致。


内容的提问来源于stack exchange,提问作者Kseniia Kravchenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 05:59:53