【问题标题】:Applescript remove folder from directory with special characters and spacesApplescript 从具有特殊字符和空格的目录中删除文件夹
【发布时间】:2016-10-07 17:37:52
【问题描述】:

我在使用新的 Sierra 更新时遇到了一些安装问题。
我想运行一个脚本来检查版本号并根据版本号删除某个 .mpkg 文件,因为我有很多客户运行错误的安装,这会导致很多问题。我已经尝试了此代码的多个版本,但似乎没有任何效果。我在 Applescript 控制台中的结果是:“”。
任何帮助将不胜感激。

tell application "Finder"

    set os_version to do shell script "sw_vers -productVersion"

    if ((os_version as string) is equal to "10.12") then

    do shell script (" rm  -rf \"Step 1 Installer.mpkg\" ")

else

    do shell script (" rm -rf  \"Step 1 Installer (SIERRA ONLY).mpkg\" ")

end if
end tell

【问题讨论】:

  • 您的第一个测试可能永远不会正确,因为版本永远不是“10.12”。我猜版本是“10.12.xx”。您应该使用“包含”而不是“相等”。然后脚本将为任何“xx”值找到版本 10.12。
  • 感谢您的建议。我采纳了你的建议,结果还是一样。
  • 在'rm'指令中,-f选项设置为不显示任何消息,即使要删除的文件不存在。因此,如果文件不存在,则不会出现错误。我会很惊讶文件“step 1 Installer.mpkg”存在于您的硬盘驱动器的根目录中。这可能是原因。
  • 我的文件位于安装程序所在的位置。它们一起在一个目录中。当我运行脚本时。第 1 步 installer.mpkg 未删除。

标签: macos shell applescript


【解决方案1】:

问题在于,当您运行rm 命令时,您没有指定 .mpkg 文件所在的目录。它不会自动查找脚本所在的同一目录. 相反,它会查看脚本的工作目录,这似乎是/(即系统卷的顶层)。您可以使用path to me 来获取脚本的路径,然后您需要将其转换为引用形式的 POSIX 路径以在 shell 中使用,然后获取父目录名称......这是我想出的:

set scriptPath to POSIX path of ((path to me) as string)
do shell script "rm -Rf \"$(dirname " & (quoted form of POSIX path of (scriptFile)) & ")/Step 1 Installer.mpkg\""

(以及其他安装程序的类似变体)

警告:*我尚未对此进行全面测试,它包含rm -Rf 命令。因此,如果出现问题,它可能会非常非常错误。在您不关心的系统上进行良好测试。

【讨论】:

    猜你喜欢
    • 2021-10-16
    • 2014-08-17
    • 1970-01-01
    • 2013-07-22
    • 2015-04-11
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    相关资源
    最近更新 更多