2016-06-01 33 views
0

Ich habe ein Skript, dass jeden Tag die Ortszeit bekommt, und dann erstellt einen Alias ​​eines von mir angegebenen Ordners durch Code auf dem Desktop. Zu Beginn fragt es nach dem Tag (über eine Liste). Es funktioniert nicht, denn selbst wenn ich launchd benutze, um es alle 5 Minuten auszuführen, wird es mich nach der Liste fragen. Gibt es eine Möglichkeit, die Variable jeden Tag zu speichern und dann den Rest der Arbeit den ganzen Tag über zu erledigen?Wie kann ich meine AppleScript in Abständen

Ich habe tatsächlich AppleScript und Automator kombiniert, damit es funktioniert, also muss ich den Automator laufen lassen und nicht das AppleScript.

Mein PLIST-Code

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
     <key>RunAtLoad</key> 
     <true/> 
     <key>KeepAlive</key> 
     <true/> 
     <key>Label</key> 
     <string>wallpaper.restart</string> 
     <key>ProgramArguments</key> 
     <array> 
       <string>PATH:TO:FILE</string> 
     </array> 
     <key>StartCalendarInterval</key> 
     <dict> 
      <key>Hour</key> 
      <integer>1</integer> 

     </dict> 
</dict> 
</plist> 

würde ich irgendwelche Hinweise schätzen für mich, um zu beginnen, oder alles, was helfen könnte.

Dank

+0

Wie bereits in der verwandten Frage erwähnt, wird mit diesem Code das Skript jeden Tag um 13:00 Uhr ausgeführt (und immer, wenn der Computer aufgrund des RunAtLoad-Schlüssels gestartet wird), jedoch nicht intervallbasiert. Um Zustände zu speichern, tun Sie dies auf der AppleScript/Automator-Seite entweder in einer Eigenschaft, unter Verwendung von Benutzervorgaben oder dem 'load/store script'-Muster. Und wofür ist 'keepAlive'? – vadian

+0

@vadian Sorry für die späte Antwort - und danke für die schnelle Antwort;) Ja, Sie haben Recht, und ich habe versehentlich den falschen Code kopiert. In meinem neuen Code habe ich das neue Update. – Dev

+0

Noch einmal: Weißt du, was 'keepAlive' eigentlich macht? – vadian

Antwort

0

Um ein Skript zu einem bestimmten Intervall ausführen, können Sie eine .plist verwenden würde, die ungefähr so ​​aussieht ...

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Label</key> 
    <string>com.mycompany.myScript</string> 
    <key>Program</key> 
    <string>/Applications/myScript/myScript.app/Contents/MacOS/applet</string> 
    <key>LowPriorityIO</key> 
    <true/> 
    <key>Nice</key> 
    <integer>1</integer> 
    <key>StartInterval</key> 
    <integer>600</integer> 
</dict> 
</plist> 

Ändern Sie die 600 Sekunden, was auch immer Anzahl der würden Sie mag es zu laufen, zum Beispiel 300 für alle 5 Minuten.

Um Daten zu einem .plist Datei zu schreiben, so dass Sie sie jederzeit zugreifen können, können Sie so etwas wie dieses ...

do shell script "defaults write com.mycompany.myApp MyInfo '" & theInfo & "'" 

Um dann lesen Sie die Informationen verwenden, würden Sie folgenden Code verwenden würde. ..

set myPref to do shell script "defaults read com.mycompany.myApp MyInfo" 

Schließlich bin ich nicht sicher, ob Sie eine „Liste“ benötigen, können Sie das Datum mit einem Skript ähnlich wie diese bekommen kann ...

do shell script "date \"+%Y-%m-%d\"" 

Das Format, das ich in diesem Beispiel gewählt habe, ist 2016-06-01, aber Sie können die Formatinformationen nach Belieben ändern, indem Sie die Zeichenfolge nach dem Befehl date ändern. Weitere Informationen finden Sie auf der Handbuchseite, oder suchen Sie nach here.

+0

Danke für Ihre Antwort, meine Spezifikation ist Tag 1, Tag 2 usw. bis Tag 6. Auch, ich bin mir nicht sicher, aber das Skript, das Sie zur Verfügung stellen, würde es eine Variable für höchstens einen Tag speichern? Könnten wir versuchen, es als Server auszuführen (oder würde das nichts tun?) – Dev

+0

@Dev Die Zeile 'set myPref zu tun Shell-Skript 'Standardwerte lesen com.mycompany.myApp MyInfo" 'wird die Daten in eine .plist-Datei schreiben, die live so lange, wie die Datei existiert (die Datei wird in Ihren Einstellungsordner geschrieben). Ich bin mir nicht sicher, auf was sich Ihr "Tag 1" und "Tag 2" beziehen, aber Sie können den Befehl "Datum" wie vorgeschlagen verwenden, um den Wochentag, die Woche des Jahres oder viele andere Optionen zu erhalten. Abhängig von Ihrem Anwendungsfall kann es sich trotzdem lohnen. – ThrowBackDewd

+0

Nochmals vielen Dank für Ihre Hilfe. Nur um es noch einmal klarzustellen, Tag 1 Tag 2 Tag 3 sind im Grunde Namen, die ich eingerichtet habe. Es geht bis Tag 6. Der Grund, warum ich 'Datum' nicht verwenden kann, ist, weil es nicht wirklich etwas ist, das ein System erkennen würde, etwas, das von mir erfunden wurde. Bitte verwirren Sie nicht mit Tag 1 Tag 2 und Montag Dienstag, da es sich um ganz unterschiedliche Dinge handelt. Es ist fast so, als hätte man Namen aus der Wildnis - Bananen, Äpfel, Orangen. Dies sind organisierte Wörter, aber nichts, was applescript wissen würde, vs. "2. Juni 2016 oder 12:33:04 Uhr usw.". – Dev