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
相关产品推荐
相关产品推荐

