当前位置: 首页 > 知识库问答 >
问题:

仅使用Applescript在文件夹“LaunchAgents”中创建一个新plist

晋越彬
2023-03-14

我想写一个苹果脚本,可以创建一个.plist文件并将其移动或复制到文件夹“LaunchAgents”。当我尝试通过拖放执行此操作时,我需要对其进行身份验证 - 我认为这就是我的代码不起作用的问题。

首先我尝试了这个:

执行shell脚本“touch~/Library/LaunchAgents/com.”

但这不起作用。我不知道为什么……我没有收到错误。所以我尝试了这个,因为我认为这是因为身份验证:

执行shell脚本“touch~/Library/LaunchAgents/com.”

但这也不起作用,所以我认为我在代码的第一行中这样做:

做 shell 脚本 “chmod 777 ~/Library/LaunchAgents” 用户名 “MyUsername” 密码 “MyPassword” 具有管理员权限

同样不起作用!:/

所以我的问题是:我的命令错了吗?为什么它不起作用?如何仅使用Applescript在“LaunchDaemon”或“LaunchAgents”文件夹中创建新文件?

共有1个答案

佟阳飙
2023-03-14

尝试这样做,属性列表只是作为文本创建,然后写入目录。将< code>Program和< code>ProgramArguments更改为您的值。

property pListLabel : "com.myLabel"

set userLibraryPath to path to library folder from user domain as text
set LaunchAgentsFolder to userLibraryPath & "LaunchAgents:"
set pListfile to LaunchAgentsFolder & pListLabel & ".plist"
try
    tell application "Finder" to make new folder at folder userLibraryPath with properties {name:"LaunchAgents"}
end try

set PLIST_data to "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
<plist version=\"1.0\">
<dict>
    <key>Label</key>
    <string>" & pListLabel & "</string>
    <key>LowPriorityIO</key>
    <true/>
    <key>Program</key>
    <string>/usr/bin/mycommand</string>
    <key>ProgramArguments</key>
    <array>
        <string>my</string>
        <string>argument</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>
"
try
    set ff to open for access file pListfile with write permission
    write PLIST_data to ff as «class utf8»
    close access ff
on error
    try
        close access file target
    end try
    display dialog pListLabel & " couldn't be created" buttons {"Cancel"} default button 1
end try

PS:除非您确切知道自己在做什么,否则不要chmod文件夹在(~)/Library中。

 类似资料:
  • 问题内容: 我想在此处创建的文件夹中创建一个文本文件。 但是此代码不会将文本文件创建到该文件夹​​中。而是将文本文件放置在该文件夹之外。 问题答案: java.io.File的构造函数之一带有一个父目录。您可以改为:

  • 为了说明这一点,我正在创建一个treeview,它将在用户创建一个文件夹后实例化自己,并且所述文件夹将被添加为TreeItem。 我现在有这个: 多谢了。

  • 在下面的代码中,我想实现“对于”和“对于”,这将在“C:\对于每一个循环的示例文件”目录中创建文件夹,并在每个目录中创建示例文本文件 运行代码后,会弹出一条错误消息,声明:*在C:\用户\尼克\对于每个脚本Construct.ps1:14字符: 10 for($Directs中的$文件夹){表达式或语句中的意外令牌'in'。 分类信息:ParserError: (:) [], 父母容器错误记录异常

  • 消息:org.xml.sax.SAXParseException:元素类型“meta”必须由匹配的结束标记“”终止。(javax.xml.Transform.TransformerException)代码:mule_error---2----------------------------“** HTM文件中的Meta标记应该与该标记完全相同地创建。 如何解决这些问题?

  • 问题内容: import java.io.File; File folder = new File(Environment.getExternalStorageDirectory() + “/TollCulator”); boolean success = true; if (!folder.exists()) { //Toast.makeText(MainActivity.this, “Dire

  • 问题内容: 我不熟悉Swift,也不确定如何从字符串路径(或某种对象)创建新文件夹 这是在带有Cocoa的OS X上。 问题答案: 我的理解是,您正在尝试使用swift以编程方式创建目录。下面给出的代码执行相同的操作。

  • 问题内容: 我有问题让用户通过ajax请求>路由> controller @ method在laravel 4中创建文件夹。 我确实对url调用权方法测试了ajax成功请求。 当我使用或(此方法存在吗?)时,我将得到响应并且无法创建新文件夹..该如何解决? route.php AdminDashboardController js 问题答案: 不,实际上是 另外,您可以尝试以下操作: 更新: 确实

  • 问题内容: 我已经阅读了Node.js的文档,除非我错过了一些内容,否则它不会告诉某些操作(特别是)中包含哪些参数。正如您在文档中看到的那样,它不是很多。 当前,我有以下代码,该代码尝试创建一个文件夹或使用现有的文件夹: 但是我想知道这是正确的方法吗?检查代码是否正确知道文件夹已存在?我知道我可以在创建目录之前执行此操作,但这已经是对文件系统的两次打击。 其次,是否有Node.js的完整或至少更详