Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 11.01.2006 - 12:16 Titel: script aus script aufrufen + variablen übergeben |
|
|
Hallöle
Ich möchte ein Droplet-Script erstellen, dass, je nach erfüllter Bedingung, verschiedene andere Scripte aufruft (bzw. ein entspr. anderes Script).
Einige ermittelte Variablen des ursprünglich gestarteten Droplet-Scripts (Name/Ort des gedroppten Ordners/Files) müsste ich dann aber an das jeweilig gestartete Script übergeben.
Ist das generell möglich, und kann mir jemand zusammenfassend sagen, wie ich das bewerkstelligen kann?
Es gibt zwar bereits einige Threads hier, die in eine ähnliche Richtung zielen, aber ich bin leider nicht so richtig fündig geworden bzw. schlau draus geworden.
Vielen Dank schon mal im Voraus _________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 11.01.2006 - 13:59 Titel: Hintergrund der Frage |
|
|
Der Hintergrund für mein Vorhaben:
Ich habe bereits verschiedene Droplet-Scripts für ganz unterschiedliche Aufgaben.
Für diese vielen Einzel-Scripts würde ich gern einen universelles Droplet-Starter-Script erstellen, das mir die Entscheidung abnimmt, auf welches Script ich den betreffenden Ordner ziehen muss, um die gewünschte Funktion auszuführen. (welches Script angewendet werden muss, lässt sich aus dem Orndnernamen ableiten).
So hätte ich nur noch ein Droplet für alle Aufgaben, ohne alle Scripte (z.T. recht umfangreich) zu einem Script verschmelzen zu müssen.
Snow: Aufruf von Scripten aus Scripten heraus, und die Übergabe/Speicherung von properties von einem Script zum anderen doch eigentlich mal ein Thema für einen "Workshop". Du kannst solche Sachen doch immer so schön auf den Punkt bringen. (Wann erscheint eigentlich dein erstes AppleScript-Buch?). Kann man schon vorbestellen? ) |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 11.01.2006 - 20:02 Titel: |
|
|
Hallo Holli,
bei einem normalen Skript kann man an den run-Handler Daten übergeben, bei einem Droplet ist mir keine Möglichkeit bekannt - es wird ja schon eine Liste mit Referenzen zu den gedroppten Objekten übergeben.
Ich würde sämtliche Skripte in ein einziges packen - in verschiedene Handler. Im "on open"-Handler gehst du die Referenz-Liste in einer Schleife durch, prüfst jeweils den Ordnernamen und leitest die entsprechende Referenz an den benötigten Handler weiter. Wenn's wirklich vom Ordnernamen abhängt, ist das eigentlich kein Problem, oder? _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 12.01.2006 - 00:46 Titel: |
|
|
Hallo Snow
Danke für die (wie immer) promte Antwort.
Snow hat Folgendes geschrieben: | bei einem normalen Skript kann man an den run-Handler Daten übergeben, ... |
Wie sähe denn sowas aus? Wie sieht überhaupt ein Scriptaufruf aus einem Script aus? Ich müsste eigentlich nur ein paar Variablen übergeben. Vielleicht als properties in ein Art Preferenz-Script, dann das jeweilige Script starten, und aus dem Preferenz-Script wieder laden, oder so.
Snow hat Folgendes geschrieben: | Ich würde sämtliche Skripte in ein einziges packen - in verschiedene Handler. Im "on open"-Handler gehst du die Referenz-Liste in einer Schleife durch, prüfst jeweils den Ordnernamen und leitest die entsprechende Referenz an den benötigten Handler weiter. Wenn's wirklich vom Ordnernamen abhängt, ist das eigentlich kein Problem, oder? |
Das geht natürlich, fänd ich aber persönlich etwas unübersichtlich.
Und funktionieren denn auch Handler innerhalb von Handlern? (habe schon einige in den jeweiligen Einzel-Scripten)
In einem anderen Tread ("Script-Dateien per Script anlegen) benutzt du folgende Aufrufe:
script blablabla
property Schiessmichtot1 : ""
property Schiessmichtot2 : ""
end script
Was bewirken diese? Ist das die generierung eines neuen Scriptes, das dann über store gesichert wird? |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 12.01.2006 - 01:08 Titel: |
|
|
Normales Skript mit Parametern starten geht so:
Skript, das ein weiteres Skript aufruft:
run script file "Macintosh HD:Users:snow:Documents:AppleScript:X Scripts:Property-Skript.app" with parameters {"Applescript ist total cool!"}
Aufgerufenes Skript, das Parameter übernimmt:
on run {x}
display dialog x
end run
Was die Skript in "Script-Dateien per Script anlegen" anbelangt, müsste ich erst mal nachschauen. Aber die Richtung stimmt schon.
Handler innerhalb Handlern funktionieren nicht - aber wenn du die Skripte innerhalb deines Hauptskripts als extra Skripte deklarierst, kannst du dort auch die Parameterübergabe nutzen.
Hier ein kleines Beispiel, das die Sache verdeutlichen soll und zum Ausprobieren geeignet ist:
script abc
on run {x}
display dialog x
dlog()
end run
on dlog()
run script def of me with parameters ("Das klappt ja tatsächlich!")
end dlog
end script
script def
on run {y}
display dialog y
end run
end script
run script abc with parameters ("Hallo Welt")
An den geschweiften Klammern bei der Parameterübergabe siehst du, dass es eine Liste ist - es sind also durchaus mehrere Parameter möglich.
run script abc with parameters {"Hallo Welt", 5}
script abc
on run {x, z}
display dialog x
display dialog z
end run
end script
Ich hoffe, das hilft dir weiter. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
spirigwi •----->


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 12.01.2006 - 09:56 Titel: |
|
|
IScript hat Folgendes geschrieben: |
(welches Script angewendet werden muss, lässt sich aus dem Orndnernamen ableiten).
|
auf OS9 hatte ich immer diese Architektur verwendet ,
sind wir hier auf OS9? (ev geht das auch mit kleiner Adaptation auf OSX)
Re-EDIT : zu unausgereift aus Zeitmangel _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Zuletzt bearbeitet von spirigwi am 13.01.2006 - 03:45, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 12.01.2006 - 12:02 Titel: |
|
|
Huhu Snow + spirigwi
spirigwi hat Folgendes geschrieben: | auf OS9 hatte ich immer diese Architektur verwendet ,
sind wir hier auf OS9?
(ev geht das auch mit kleiner Adaptation auf OSX) ... |
Ja wir sind auf OS9, ich bräucht's dann aber auch für OSX.
Der Code der Einzelscripte läuft aber auf beiden OSen, so dass das hinzukriegen sein sollte.
spirigwi hat Folgendes geschrieben: | ... Kurz: aufgrund des Namens des gedropten AS-Files startet das Droplet dessen Skript. Damit kann das Skript auch im Droplet selbst enhalten sein.
PS: das ist aber nur ein Modell und macht per se natürlich noch keinen Sinn. |
Mit dem Sinn dieses Modells habe ich auch noch so meine Probleme. Werde aber trotzdem vielleicht die eine oder andere Zeile aus deinem Beispiel brauchen können.
Mir scheint Snows Ansatz aber vielversprechender ("Geht nicht gibt's nicht, gelle Snow?"). Prinzipiell scheint mir mein Vorhaben jetzt doch möglich zu sein. Ich werd' ein bisschen brauchen, um das alles auszuprobieren. Ich meld' mich dann auf jeden Fall wieder an dieser Stelle. Es wird sicher auch noch an einigen Ecken haken.
Vielen Dank schon mal für die Richtungsvorgabe _________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 12.01.2006 - 13:00 Titel: |
|
|
Hallo Snow
Wie sähe es denn mit den Handlern bei der Variante mit der Scriptdeklaration der Einzelscripte im Hauptscript aus?:
Sind Handler, die ich innerhalb einer Scriptdeklaration ("Unter-Script")definiere dann nur für dieses Script gültig, während Handler, die ich außerhalb der Scriptdeklaration der Einzelscripte definiere, in allen "Unter-Scripts" angewendet werden können?
Und, das Wichtigste: darf es sich bei meinem Hauptscript denn auch um ein Droplet handeln ("on open"-Handler)? Müsste doch auch gehen, oder? _________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 12.01.2006 - 13:41 Titel: |
|
|
Hallo Snow
Dein Vorschlag war mal wieder super.
Hab folgendes probiert, und klappte prima.
on open Gedroppt
tell application "Finder"
set derpfad to ((item 1 of Gedroppt) as text)
set dername to ((name of folder derpfad) as text)
--Bedingung, welches SubScript startet
if dername contains "a" then run script SubScriptA of me with parameters {dername, derpfad}
if dername contains "b" then run script SubScriptB of me with parameters {dername, derpfad}
end tell
end open
-- Und hier die "Unter-Scripts"
script SubScriptA
on run {dername, derpfad}
display dialog "Der a-Ordner heißt" & dername & return & "Pfad: " & derpfad
end run
end script
script SubScriptB
on run {dername, derpfad}
display dialog "Der b-Ordner heißt" & dername & return & "Pfad: " & derpfad
end run
end script
Zuletzt bearbeitet von iScript am 13.01.2006 - 00:33, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
spirigwi •----->


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 12.01.2006 - 15:21 Titel: |
|
|
1) iScript hat Folgendes geschrieben: | Aufruf von Scripten aus Scripten heraus, und die Übergabe/Speicherung von properties von einem Script zum anderen | Re-EDIT : zu unausgereift aus Zeitmangel
Schade dass von propertys nichts zu sehen. Ich hoffte, dass propertys Werte in ein zentrales AS-File hinein so speichern könnten, dass sie zeitlich hintereinander aus verschiedenen Scripten wieder abgerufen werden könnten. Aber das war hier wohl nicht die Idee des threads. _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Zuletzt bearbeitet von spirigwi am 13.01.2006 - 03:56, insgesamt 4-mal bearbeitet |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 13.01.2006 - 00:27 Titel: |
|
|
hallo spirigwi
ich werde es wohl so machen, wie in meinem letzten posting beschrieben.
das ist ja ein droplet, das mit dem on open handler die entsprechenden variablen an die "unter-scripts" (das werden die bisherigen bereits funktionstüchtigen scripts, die ja bislang als einzelne scripts vorliegen, und die ich nun als "unter-scripts" mit einfügen werde) liefert.
so habe ich dann ein script für alle anstehenden aufgaben.
wichtig war eben auch, dass die bestehenden handler der einzelscript weiterhin funktionieren, was ja nicht gegeben wäre, wenn ich sie selbst als handler in das drop-script eingebaut hätte.
snow hat mich ja verstanden, und es eigentlich auf den punkt gebracht und auch eine praktikable lösung angeboten.
mit deinen postings (deine bemühungen in allen ehren) habe ich, ohne dir vor den kopf stossen zu wollen, so meine probleme: deine formulierungen sind so wirsch, wage und zum teil auch unpräzise, dass es mir schwer fällt, dem immer zu folgen. das ist dann eher verwirrend als hilfreich.
wie gesagt, ich will dir nicht vor den kopf stossen, aber du solltest vielleicht etwas mehr zeit darauf verwenden, deine formulierung zu präzisieren und auf verständlichkeit zu achten.
das kommt bei ohnehin schon verwirrten apple-scriptern ganz sicher besser an, als bunte postings mit "lustigen" einwürfen, die letztendlich keinen spass machen, weil es so schwierig ist, sich in sie einzudenken.
ich werde den ansatz mal weiterverfolgen, und melde mich wieder, falls weitere probleme auftauchen, und wenn alles glückt, werde ich die lösung hier mal hineinstellen.
danke _________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
|
|
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
|
|
|