繁体   English   中英

如何使用applescript计算卷大小列表?

how to use applescript calulate volume size list?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我需要弄清楚很多硬盘驱动器上的容量—超过150个USB和雷电驱动器。 我以为我可以构建AppleScript或自动操作来获得卷的总大小,然后减去“可用”。 理想情况下,我可以启动脚本,它将监视要装入的卷,进行此数学运算并将其添加到正在运行的总计中。

我们正在购买一台新服务器,我们很想知道我们需要投入多大的驱动器才能保持所有这些资产的生命。

我在Apple脚本方面还很陌生,但我正在尝试。 我什至找不到要查找已装入磁盘的AS词典项目,更不用说添加数学了(即使它只是输出要拉入制表符分隔文件的信息,也可以在Excel中计算)

实际上,也许这是理想的版本。 它看到驱动器安装,获得名称,获得总容量,获得可用空间...完美的世界? 创建日期。 然后将其添加到文本文件。

代码,指向哪里可以学习的指针,不胜感激。

2 个回复

这是一个AppleScript解决方案,它将返回显示的名称以及每个已安装卷上的可用空间量。

set allMountedVolumesInfo to {}

tell application "System Events"
    set everyDisk to every disk
    repeat with i from 1 to count of everyDisk
        set thisDisk to displayed name of item i of everyDisk
        tell its disk thisDisk
            try
                set diskFreeSpace to (characters 1 thru 7 of ((free space / 1.0E+9) as string))
                set totalCapacity to (characters 1 thru 7 of ((capacity / 1.0E+9) as string))
                set creationDate to creation date
            on error errMsg number errNum
                set diskFreeSpace to (free space / 1.0E+9)
                set totalCapacity to (capacity / 1.0E+9)
                set creationDate to creation date
            end try
            set theRecord to {volume:thisDisk, free space:((diskFreeSpace & " Gigabytes") as string), creation date:creationDate, capacity:((totalCapacity & " Gigabytes") as string)}
        end tell
        set end of allMountedVolumesInfo to theRecord
    end repeat
end tell

下面的脚本旨在作为文件夹操作运行。 如果您不熟悉这些内容,它们将允许您监视指定文件夹中其内容的任何更改,然后可以触发AppleScript来对从监视的文件夹中添加(或删除)的项目执行某些操作。

每当安装磁盘时,安装点都会作为磁盘项添加到/Volumes文件夹中。 因此,您可以设置一个文件夹操作来监视/Volumes文件夹的内容,并在装入新卷时让它触发AppleScript。

这是旨在触发的脚本:

use sys : application "System Events"
use scripting additions

property text item delimiters : tab
property fp : "~/Desktop/diskinfo.csv"

on adding folder items to Volumes after receiving D
    set D to a reference to the sys's disk named (item 1 of D)

    set f to a reference to sys's file fp
    if not (f exists) then initCSVFile(fp)

    set isod to the (current date) as «class isot» as string

    get the contents of {isod's text 1 thru 10, ¬
        isod's text 12 thru -1, ¬
        D's name, ¬
        gigabytes(D's capacity), ¬
        gigabytes(D's free space)} as text

    write the result & linefeed ¬
        to (f as alias) ¬
        starting at eof ¬
        as «class utf8»
end adding folder items to

to gigabytes(bytes)
    round bytes / (10 ^ 7)
    result / 100
end gigabytes

to initCSVFile(fp)
    local fp

    set f to make of sys new file with properties {name:fp}

    {"Date", "Time", "Volume Name", "Capacity (GB)", "Free Space (GB)"}
    write (result as text) & linefeed to (f as alias) as «class utf8»
end initCSVFile

复制并粘贴到脚本编辑器中 ,并将其另存为~/Library/Scripts/Folder Action Scripts文件夹中的"New Volume Mounted.scpt" ,其中~是您的主目录,例如/Users/Alex 如果"Folder Action Scripts"文件夹不存在,请创建它。

如果您乐意从此处创建文件夹操作,请执行此操作,然后安装新卷。 当上面的脚本被触发时,它会将安装卷的当前日期和时间及其名称,容量和可用空间量添加到桌面上文件diskinfo.csv的末尾(如果该文件不存在) ,脚本将创建它)。 这是一个CSV(逗号分隔值)文件,使用制表符作为分隔符(因此,它实际上是TSV)。 QuickLook通常可以很好地显示这些文件的内容:

快速浏览


文件夹操作设置

如果您不熟悉设置文件夹操作,请阅读《 Mac Automation Scripting Guide - Watching Folders Attaching a Folder Action Script to a Folder名为“ Attaching a Folder Action Script to a Folder的部分。

但是,为了节省一些时间,我还创建了一个脚本,该脚本将为您创建文件夹操作:

use sys : application "System Events"

property name : "Volumes"
property path : "/Volumes"
property folder action : a reference to folder action named (my name)
property script : "New Volume Mounted.scpt"
property folder : a reference to Folder Action scripts folder
property file : a reference to the file named (my script) in my folder

set folder actions enabled to true

if not (my file exists) then return open my folder
if my folder action exists then return my folder action's scripts

make new folder action with properties {name:my name, path:my path}
tell my folder action to make new script with properties ¬
    {name:my file's name, POSIX path:my file's POSIX path}

set my folder action's enabled to true
set my folder action's scripts's enabled to true

同样,将其复制-n-粘贴到脚本编辑器中的新文档中,然后运行它。 仅在将第一个脚本保存到我指定的位置后,然后"New Volume Mounted.scpt"检查文件名是"New Volume Mounted.scpt" (您可以选择所需的任何文件名,但需要在其中进行适当的更改),创建文件夹操作的脚本)。

您可能需要授予必要的可访问性特权才能运行此脚本。

如果您遇到任何问题,请告诉我。

1 EaselJS计算文本的字体大小

createjs.Text类提供lineWidth,lineHeight,maxHeight,maxWidth等的用法。 我可以为我的文本定义自定义字体大小,但是我需要计算它。 这是我的代码: 说明文字可以更改,我想在空间中容纳越来越大的文字。 例如,两张具有相同文本的 ...

2 如何通过Applescript逻辑控制音量控制?

我通过Applescript创建了一个应用程序,并在桌面上运行了该应用程序, 我将针对特定逻辑自动打开项目文件。 移到第一首曲目后,不过是播放语法。 到目前为止,我已经创建了。 问题,但在它旁边。 当我通过Applescript制作另一个应用程序时, 必须尝试淡出当前 ...

3 使用Diskpart设置卷大小

我必须运行一个自动批处理脚本来进行磁盘分区。 默认情况下,只有C:占据整个HDD,肯定超过120 GB 我必须将C:的\\ shrink大小设置为120 GB,并使用剩余的空间来创建其他卷。 现在我知道我可以使用收缩命令,但是我不知道总的硬盘大小(在一台机器之间,硬盘大小可能有所不同,但是无论 ...

6 如何在AppleScript中使用边栏?

我想知道如何使用侧边栏创建一个窗口,基本上我想要的是一个侧边栏,通过单击名称可以打开一些窗口,如下面的示例,在此先感谢。 ...

9 如何计算欧几里得距离? (HSL)

因为我读过一篇文章, HSL配色方案与人眼配色方案相当准确,所以我很确定HSL比较是检查两种颜色是否相似的最佳方法。 从此开始: 我有两种HSL颜色,例如... 一种参考颜色: 296° 100% 62% (如[296, 100, 62] ) 另一种颜色: 290 ...

10 在applescript中将音量增加1

我正在尝试复制音量键的功能,但是在applescript中。 我不能让它工作。 增大音量按钮将音量设置为最大,而减小音量按钮则执行相同的操作。 有人知道我在做什么错吗? 这是我的代码: ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM