【问题标题】:Using backslashes in text replacement in AppleScript在 AppleScript 中的文本替换中使用反斜杠
【发布时间】:2018-06-15 19:27:00
【问题描述】:

我目前正在尝试创建一个 AppleScript 应用程序,它将一个文件夹从其“内容”文件夹复制到用户的桌面。我现在的代码是:

set theFile to path to me as string
set hfsme to theFile & "Contents:Folder"
set posixPath to POSIX path of hfsme

set contentfolder to posixPath
set AppleScript's text item delimiters to " "
set textItem to text items of contentfolder
set AppleScript's text item delimiters to "\\ "
set contentfolder to textItem as string
set AppleScript's text item delimiters to {""}

do shell script "cp -a " & contentfolder & " $HOME/Desktop"

但是,我在运行时收到以下错误:

“cp: /Users/myusername/Desktop/Test Application.app/Contents/Folder: 没有那个文件或目录”

我认为这是因为我希望复制位置是:

/Users/myusername/Desktop/Test\ Application.app/Contents/Folder

但脚本未能在 shell 命令所需的空格前添加反斜杠。

我的问题是:如何用“\”替换变量中的空格?

附:在建议简单地将应用程序重命名为没有空格的名称之前,对我来说拥有一个带空格的应用程序名称非常重要。 我也尝试过使用 AppleScript 的“重复”命令,但无法让它工作,但我愿意接受建议! (请记住,我希望这个脚本也可以在其他人的计算机上运行,​​这意味着我不能假设我已经知道用户的用户名。

提前感谢您的帮助!

亲切的问候,汤姆

【问题讨论】:

    标签: macos applescript backslash text-manipulation


    【解决方案1】:

    只需添加quoted form of,它以非常智能(且可靠)的方式处理报价。

    set theFile to POSIX path of (path to me)
    set contentfolder to theFile & "Contents/Folder"
    do shell script "cp -a " & quoted form of contentfolder & " $HOME/Desktop"
    

    如果do shell script不支持$HOME

    do shell script "cp -a " & quoted form of contentfolder & space & quoted from of POSIX path of (path to desktop)
    

    【讨论】:

    • 非常感谢!现在绝对完美!
    猜你喜欢
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 2012-04-14
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多