Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

simple skripts für Anfänger (mich)

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Prion
•->
•->


Anmeldedatum: 29.06.2006
Beiträge: 18

BeitragVerfasst am: 29.06.2006 - 12:37    Titel: simple skripts für Anfänger (mich) Antworten mit Zitat

Hallo

ich bin neu hier und auf der Suche nach der Lösung für ein praktisches Problem. Die bessere Variante wäre wahrscheinlich, erst alle Bücher über AS zu lesen, von daher hätte ich sogar Verständnis dafür, wenn ihr mich hier rauswerft. Andererseits würde ich viel besser verstehen, wo meine Verständnisprobleme genau liegen, wenn ihr mir da Tipps gebt, wo ich allein nicht weiter komme.

Das Problem, das ich lösen möchte: Ich habe ein Programm, das eine Datenbank mit vielen tausend files verwaltet, die ich in ein sparseimage geschrieben habe, Größe ein knappes GB. Nun muss natürlich das image gemountet sein, damit das Programm sich zurechtfindet. Wenn es startet ohne dass dies der Fall ist, hat das sehr unangenehme Folgen.

Meine Lösung für Teilprobleme:
1) erst image mounten, dann Programm starten

Code:

tell application "Finder"
   open document file "Sente_Bibliothek.sparseimage" of folder "Sente" of folder "Literatur" of folder "Daten_CH" of folder "Documents" of folder "testuser" of folder "Users" of startup disk
   delay 4
   set target of Finder window 1 to folder "Applications" of startup disk
   open application file "Sente.app" of folder "Applications" of startup disk
end tell

Geht zwar, die delay Lösung ist aber primitiv. Lieber wäre mir, ich könnte 1a) prüfen, ob Sente läuft und nur in diesem Fall versuchen, das image zu öffnen.
1b) den Erfolg des öffnens des images abwarten und dann zum genau richtigen Zeitpunkt Sente starten

Code:

tell application "System Events" to (name of processes) contains "Sente"


sagt mir zwar ob es läuft, aber um ehrlich zu sein, weiß ich nicht, was ich mit dem true und false anfangen kann (in dem Punkt blutiger Anfänger).

2) Das Schließen würde ich gern genau umgekehrt ablaufen lassen. Also erst Programm Sente schließen, den Erfolg abwarten un dann das gemountete image unmounten. Dabei komme ich nicht klar.
Code:

tell application "Sente"
quit
end tell

geht natürlich, aber um den Erfolg abzuwarten, müsste ich natürlich wissen wie ich mit der Antwort false auf den code am Ende von Punkt 1 weitermachen kann.

Und wie unmounte ich das Volume, das sich zeigt, wenn ich das sparseimage öffne? Nebenbei: warum kann ich ein Skript aufzeichnen, welches das Öffnen eines Programms beinhaltet, aber nicht wenn es um das Schließen geht?

3) Das Schließen könnte man prima mit einem Schrumpfen des sparseimages verbinden. Derzeit verwende ich ein Skript
Code:

tell application "Terminal"
   do script "hdiutil compact -verbose /Users/testuser/Documents/Daten_CH/Literatur/Sente/Sente_Bibliothek.sparseimage"
end tell

das tut was es soll, natürlich ebenfalls Marke einfach. Der Pfad stimmt natürlich nur bei mir (testuser). Kann man vorher einen Auswahldialog präsentieren (Wo liegt das Image? such such) und diesen Pfad dann als Variable zur Verfügung stellen? Aber geht das auch mit meiner shellskript Lösung oben?

Ich bin sicher, ich habe mich ziemlich dämlich angestellt. Die Sachen funktionieren zwar soweit, aber doch fummelig. Falls mir jemand bei einem Teil meiner Probleme weiterhelfen könnte, wwäre ich sehr dankbar!

Prion
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
till
•--->
•--->


Anmeldedatum: 21.04.2005
Beiträge: 187
Wohnort: q-town (R-P)

BeitragVerfasst am: 29.06.2006 - 13:12    Titel: Antworten mit Zitat

hey kein problem - wir freun uns doch

so zu 1 und 1b (brauchst nicht über sys events machen)
Zitat:

tell application "Finder"
   open document file "Sente_Bibliothek.sparseimage" of folder "Sente" of folder "Literatur" of folder "Daten_CH" of folder "Documents" of folder "testuser" of folder "Users" of startup disk
   repeat
      set x to name of every disk
      if x contains "Sente_Bibliothek" then
         exit repeat
      end if
   end repeat
   
   set target of Finder window 1 to folder "Applications" of startup disk
   open application file "Sente.app" of folder "Applications" of startup disk
end tell


so an den rest mach ich mich
till
_________________
ein berühmter Philosoph (<-Ich) sagte einmal:
" es ist nicht das Problem was uns Kopfzerbrechen macht,
es ist der Kopf selbst, der sich erdrückt"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
till
•--->
•--->


Anmeldedatum: 21.04.2005
Beiträge: 187
Wohnort: q-town (R-P)

BeitragVerfasst am: 29.06.2006 - 13:14    Titel: Antworten mit Zitat

ach ja musst du denn jedes mal das programm in den app ordner kopieren du kannsts auch auf dem image direkt ansprechen.

open file "Sente.app" of disk "Sente_Bibliothek"
_________________
ein berühmter Philosoph (<-Ich) sagte einmal:
" es ist nicht das Problem was uns Kopfzerbrechen macht,
es ist der Kopf selbst, der sich erdrückt"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
till
•--->
•--->


Anmeldedatum: 21.04.2005
Beiträge: 187
Wohnort: q-town (R-P)

BeitragVerfasst am: 29.06.2006 - 13:28    Titel: Antworten mit Zitat

so zu problem nummer 2)

Zitat:
tell application "System Events"
   tell application "Sente" to quit
   
   repeat
      set x to name of every process whose visible is true
      if x contains "Sente" then
      else
         tell application "Finder" to eject disk "Sente_Bibliothek"
         exit repeat
      end if
   end repeat
   
   
end tell

_________________
ein berühmter Philosoph (<-Ich) sagte einmal:
" es ist nicht das Problem was uns Kopfzerbrechen macht,
es ist der Kopf selbst, der sich erdrückt"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
till
•--->
•--->


Anmeldedatum: 21.04.2005
Beiträge: 187
Wohnort: q-town (R-P)

BeitragVerfasst am: 29.06.2006 - 13:43    Titel: Antworten mit Zitat

so un hier die 3

Zitat:
set y to "/"
tell application "Finder"
   set x to choose file with prompt "Wähle das image aus" without invisibles
   set x to (x) as text
   --pfad umschreibung in shell sprache
   repeat with bstabe in x
      if text of bstabe is ":" then
         set bstabe to "/"
      end if
      set y to y & bstabe
   end repeat
   -- y= pfad
   do shell script "hdiutil compact -verbose " & y
end tell


noch viel erfolg till
_________________
ein berühmter Philosoph (<-Ich) sagte einmal:
" es ist nicht das Problem was uns Kopfzerbrechen macht,
es ist der Kopf selbst, der sich erdrückt"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Prion
•->
•->


Anmeldedatum: 29.06.2006
Beiträge: 18

BeitragVerfasst am: 29.06.2006 - 14:32    Titel: Antworten mit Zitat

Shocked
da bin ich mal grad eine Stunde weg und schon gibt's Lösungen. Super, ganz ganz herzlichen Dank schon einmal.
Alles versteh ich noch nicht, aber eines ist mir jetzt klar, ich hab viel zu kompliziert gedacht bei Punkt1. Ich habe zu sehr probiert, das mit einem Skript nachzubilden, was ich mit der Maus oder shortcuts hätte machen müssen. Dass es viel einfacher geht, zeigt dein erstes Beispiel, wär ich einfach nicht drauf gekommen.

Ein Teil deiner Fragen (und meiner Nachbesserungswünsche) liegt daran, dass ich mich nicht klar genug ausgedrückt habe. Es gibt einen Teil der Arbeiten, die ich idealerweise nur einmal machen wollte. Dazu gehört:

4) Das Erstellen des sparseimages und das Verschieben der Datenbank in dieses image. dem Programm muss dann in seinen Preferences mitgeteilt werden, wo es sich nach seinem nächsten Start seine Datenbank suchen soll, dh. im neuen image.
5) Den Anwender auffordern, den Pfad zu spezifizieren, unter dem das image zu finden ist. Diese Information sollte dann bis auf weiteres immer weiter verwendet werden, müsste also dauerhaft hinterlegt werden.

Diese Information sollte dann für die immer wiederkehrenden Arbeiten (Öffnen sowie schließen incl. compact-ieren des images) verwendet werden.

Das Schließen-Skript produziert mir diese Fehlermeldung

Code:

„System Events“ hat einen Fehler erhalten: NSReceiverEvaluationScriptError: 4


scheint seinen Job aber zu erledigen.

Das "suchdasimageundmachesklein" skript wirft diesen Fehler aus
Code:

„Finder“ hat einen Fehler erhalten: hdiutil: compact: Only one input file can be specified.
hdiutil: compact: result: 22


und macht glaub ich nicht das, was es soll. Muss ich noch an irgendeiner Stelle etwas anpassen? Ich habe den code erstmal so übernommen.

Nochmals vielen Dank
Prion
[/code]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Prion
•->
•->


Anmeldedatum: 29.06.2006
Beiträge: 18

BeitragVerfasst am: 29.06.2006 - 14:54    Titel: Antworten mit Zitat

Die Fehlermeldungen hatten wohl nur die Mehrfachverwendung von X und Y als Ursache. Ich habe die Variablen als etwas für mich einfacher zu merkende umbenannt und seitdem geht's Very Happy


die einzige Meldung bleibt die letzte, beim "suchdasimageundmachesklein"
es bleibt diese Zeile unterlegt:
do shell script "hdiutil compact -verbose " & Pfad

wobei Pfad vorher y hieß und auch unterlegt war.

Irgendeine Idee?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 29.06.2006 - 15:29    Titel: Antworten mit Zitat

Wahrscheinlich sind irgendwo im Pfad Leerzeichen Cool
Probiere mal bitte:
do shell script "hdiutil compact -verbose " & quoted form of Pfad

CU
ShooTerKo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Prion
•->
•->


Anmeldedatum: 29.06.2006
Beiträge: 18

BeitragVerfasst am: 29.06.2006 - 16:06    Titel: Antworten mit Zitat

Der Pfad enthält Leerzeichen, das stimmt.

Wenn ich die "quoted of" Form wähle, erhalte ich als Resultat:
Code:

„Finder“ hat einen Fehler erhalten: hdiutil: compact: processing "/Macintosh HD/Users/testuser/Documents/backup_Sente_image.sparseimage"
hdiutil: compact: result: 2
hdiutil: compact failed - Es existiert keine Datei und kein Verzeichnis dieser Art


Dabei habe ich die Datei ja im Auswahldialog ausgewählt, also musss es sie geben Confused

Ich glaub ich muss noch viel lernen...
Danke für eure Geduld!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 29.06.2006 - 17:35    Titel: Antworten mit Zitat

Da scheint es sich eher um eine falsche Bedienung des hdiutil-Programms zu handeln. Da kenne ich mich aber gar nicht mit aus...
Du kannst es ja mit dem Terminal ausprobieren:
hdiutil compact -verbose '/Macintosh HD/Users/testuser/Documents/backup_Sente_image.sparseimage'

Hey, Moment mal, dein Pfad sieht *+?% aus! Shocked

Korrekterweise sollte er

'/Users/testuser/Documents/backup_Sente_image.sparseimage'

lauten! Ohne den Festplattennamen!
Wenn du mit choose file eine Datei ausgesucht hast, kommst du über

POSIX PATH of deineDatei

an den Posix path, den du für do shell script brauchst. Und für choose file brauchste den Finder auch nicht...

Also ohne tell "Finder":

set x to choose file with prompt "Wähle das image aus" without invisibles
do shell script "hdiutil compact -verbose " & quoted form of (posix path of x)

So sollte es funzen! Very Happy Very Happy

CU
ShooTerKo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
till
•--->
•--->


Anmeldedatum: 21.04.2005
Beiträge: 187
Wohnort: q-town (R-P)

BeitragVerfasst am: 29.06.2006 - 22:05    Titel: Antworten mit Zitat

sry bei mir waren das einzelen scripts mit x un y da di ich zammegeschmisse hab.
ja das mit dem posix path of kann mir ja mal au jemand sagen !
ich amch da immer meine unnötige doppelpunktersetzerschleife, jedes mal!
jetzt weiß ichs ja.das mit dem sys event fehler klappt bei mir aber wunderbar . hmmm Mach mal statt dem tell app"Sente"...

try
quit app "Sente"
end try

gruß till
_________________
ein berühmter Philosoph (<-Ich) sagte einmal:
" es ist nicht das Problem was uns Kopfzerbrechen macht,
es ist der Kopf selbst, der sich erdrückt"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Prion
•->
•->


Anmeldedatum: 29.06.2006
Beiträge: 18

BeitragVerfasst am: 29.06.2006 - 23:05    Titel: Antworten mit Zitat

@ShooTerKo,

genau - das ist es! So klappt es auch - juhuu!

@ till

da besteht nun wirklich kein Grund, ein bisschen mitdenken muss ich schließlich auch noch. Bin ja schon froh, dass es wenigstens dazu gereicht hat Very Happy
außerdem finde ich es toll, dass man offenbar nie aufhört etwas Neues zu lernen, selbst wenn man schon so viel weiß.

Ist eigentlich irgendwo halbwegs zusammenhängend erklärt, welche Befehle wofür existieren? Ich habe mal im Skripteditor die Bibliotheken durchgeflöht, aber das liest sich ja etwa so zusammenhängend wie ein Telefonbuch. Außerdem scheint mir, als würde einem dann etwas durch die Lappen gehen, da nicht alles von der Finder Bibliothek abstammt, wenn man den Finder skripten will, sondern das ganze basale Applescript/UNIX Zeugs, das nicht in der Finder (oder sonst irgendeiner) Bibliothek aufgeführt ist.

Liebe Leute, ganz herzlichen Dank, neben der Lösung meines Problems war das eine prima Motivationshilfe für eine weitere Beschäftigung mit Applescript für mich. Wirklich.

Erst mal schönen Abend noch

Prion
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Prion
•->
•->


Anmeldedatum: 29.06.2006
Beiträge: 18

BeitragVerfasst am: 29.06.2006 - 23:13    Titel: Antworten mit Zitat

da wir gerade beim lernen sind, will ich euch eine Erkenntis nicht vorenthalten, über die ich nebenher gestolpert bin und das, obwohl ich hdiutil compact schon seit längerem verwende.

Datt klapt nur, wenn man nach größeren Umstrukturierungen im sparseimage vor dem Auswerfen des image auch den Papierkorb leert, sonst ist der Größengewinn gleich null.

Kann man testen: Papierkorb leermachen, nachsehen: ist leer. Aus dem sparseimage 100MB rauslöschen, unmounten, ist noch genausogroß wie vorher, logo, wächst ja nur mit. Aber auch das kompaktieren geht nicht wirklich. Papierkorb aufmachen: Immer noch leer.
Jetzt aber image mounten: und zack, Papierkorb proppevoll. Wenn man den leert und das image unmountet, dann geht auch das kompaktieren.

Vielleicht hilft's ja jemandem.

Prion
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
till
•--->
•--->


Anmeldedatum: 21.04.2005
Beiträge: 187
Wohnort: q-town (R-P)

BeitragVerfasst am: 29.06.2006 - 23:14    Titel: Antworten mit Zitat

-büdde büdde - immerwieder gerne
-freuen uns über jedes neue mitglied , oder?(zumindest ich)

mit der bibliothek geb ich dir recht ich hasse es heutzutage noch wenn ich nur etwas versuche im app "internet Connect" zu scripten - ich um gehe dieses prog immer. naja ich schweife ab .
zuerst solltest du das hier lesen:
kurz , knapp und super geschrieben
http://www.fischer-bayern.de/applescript/html/ebook.html

alles weiter hier im forum oder für 33 euro bei amazone As the definitive guide

gn8 till
_________________
ein berühmter Philosoph (<-Ich) sagte einmal:
" es ist nicht das Problem was uns Kopfzerbrechen macht,
es ist der Kopf selbst, der sich erdrückt"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter