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

Überwachte Ordner?
Gehe zu Seite 1, 2  Weiter
 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
FrodoBeutlin
•->
•->


Anmeldedatum: 04.12.2004
Beiträge: 6
Wohnort: Oberbayern

BeitragVerfasst am: 04.12.2004 - 18:07    Titel: Überwachte Ordner? Antworten mit Zitat

Hallo AppleScripter,
bin als Anfänger vom Forum der MacUp hierher verwiesen worden:
Ich habe unter OS 9 einen Ordner freigeben; auf dieses Verzeichnis greifen mehrere Anwender einer vernetzten Arbeitsgruppe zu, d. h. sie kopieren Dateien hinein (nur Dateien, keine Unterordner). Der freigegebene Ordner soll per AppleScript überwacht werden; sobald neue Dateien eintreffen und vollständig (es handelt sich um Bilddaten, evtl. -zig MB gross) übertragen sind sollen diese wiederum auf einem Server in ein Verzeichnis kopiert und nach vollständiger Übertragung im Quellverzeichnis (d.h. auf der OS9-Kiste) gelöscht werden. Kann mir da jemand helfen?

herzlichen Dank schon mal im Voraus

Frodo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 04.12.2004 - 19:11    Titel: Antworten mit Zitat

Hallo Herr Frodo,

Ordneraktionen scheiden schon mal aus, da unter OS 9 der Ordner dabei ständig geöffnet sein müsste.

Alternative: Ein Skript das als Startobjekt gestartet und nicht stelbstständig beendet wird, also geöffnet bleibt.

Dieses Skript muss in bestimmten Zeitintervallen feststellen, ob neue Dateien eingetroffen sind und ob diese bereits vollständig sind.

@alle
Wie zuverlässig ist 'busy status' unter OS 9? In OS X ist es ja praktisch unbrauchbar und alle AppleScripter dieser Welt suchen nach der optimalen Lösung.

Ich denke, die Überwachung des Ordners ließe sich unter OS 9 aber schon hinbekommen.

Das größere Problem ist hier dann der Upload. URL-Access-Scripting ist leider sehr unzuverlässig. Mit OS X könnte man das per 'curl' erledigen unter OS 9 wäre es evtl. besser, ein FTP-Programm zu nutzen, wie z.B. Fetch oder Interarchie, die beide sehr gut per AppleScript gesteuert werden können.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 04.12.2004 - 19:49    Titel: Antworten mit Zitat

Hallo Herr der Ringe,

hier folgt schon mal das Grundprinzip der Ordnerüberwachung:

property WatchFolder : ""

on doJob()

if WatchFolder = "" then
set WatchFolder to ¬
choose folder with prompt "Welcher Ordner soll überwacht werden?"
end if
-- nur zu Testzwecken
tell me to activate
display dialog "Los geht's" giving up after 1
-- Ende Test
tell application "Finder"
set FileList to every file of WatchFolder whose label index is 0
if FileList is not {} then
repeat with oneFile in FileList
set theInfo to info for oneFile
if busy status of theInfo = false then
set label index of oneFile to 1
end if
end repeat
end if
end tell
end doJob

on idle
my doJob()
return 10
end idle


Zuerst wird der zu überwachende Ordner festgelegt. Man braucht das nur beim ersten Start zu tun, da der Ordner danach in der 'property WatchFolder' gespeichert wird.

Das Skript muss als Programm gespeichert werden mit der Option "Nicht automatisch beenden". Dieses Skript beinhaltet im Moment zwei sog. 'Handler'. Dies sind unabhängige Programmteile, die nur per Aufruf ausgeführt werden. Ein besonderer Handler ist der 'on idle'-Handler. Dieser sorgt dafür, dass der doJob-Handler in regelmäßigen Intervallen ausgeführt wird. Das Zeitintervall ist im obigen Beispiel auf 10 Sekunden festgelegt. Für die Praxis dürften dann allerdings größere Intervalle sinnvoller sein.

'busy status' scheint zuverlässig zu funktionieren. Ich habe im Test eine 20 MB Datei in den Ordner kopiert und für diese Datei wurde das Etikett wirklich erst gesetzt, nachdem sie vollständig war. Der doJob-Händler wurde bei diesem Test 2 - 3 mal aufgerufen.

Unser Ordner wird also bereits zuverlässig überwacht.
Statt einfach nur das Etikett der jeweiligen Datei zu ändern, könnten wir auch bereits einen weiteren Handler aufrufen, der die Datei auf den Server lädt. Dazu brauchen wir aber zuerst die Information, ob du über ein AppleScript-fähiges FTP-Programm verfügst. Denn wie bereits erwähnt, möchte ich das ungern per URL-Access-Scripting erledigen.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 04.12.2004 - 20:02    Titel: Antworten mit Zitat

Ich habe mir gerade überlegt, ob es nicht vielleicht sinnvoll wäre, den Upload mittels eines zusätzlichen Skriptes zu erledigen. Dieses Skript würde dann analog des ersten Skriptes vorgehen und zunächst einmal alle Dateien suchen, die 'label index 1' aufweisen. Danach könnte der Upload stattfinden.
Nach erfolgtem Upload könnte man dann ein anderes Etikett zuweisen. So könnte man dann das Löschen der Dateien wieder einem anderen Skript überlassen.

Nachteil: Es laufen ständig 2 oder 3 Skripte

Vorteil: Die Überwachungsintervalle könnten unterschiedlich gesetzt werden.

Ich denke, eine Aufteilung wäre schon sinnvoll, sonst 'überholt' sich das Skript am Ende selbst. Wenn das Überwachungsintervall zu kurz ist, wird evtl. eine Datei erfasst, die sich gerade im Upload befindet (hängt davon ab, wie gut wir den Upload per AppleScript nachverfolgen können).

Andere Meinungen sind herzlich willkommen.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
FrodoBeutlin
•->
•->


Anmeldedatum: 04.12.2004
Beiträge: 6
Wohnort: Oberbayern

BeitragVerfasst am: 05.12.2004 - 11:41    Titel: Antworten mit Zitat

Hallo Snow,
im Prinzip habe ich das verstanden, es würde auch nichts machen, wenn 2 Scripte gleichzeitig laufen; Script 1 überwacht den OS9-Ordner, ob neue Dateien eingegangen sind, Script 2 überwacht den Server-Ordner, ob Dateien vollständig übertragen worden sind und löscht diese Dateien dann im OS9-Ordner; was ich nicht verstehe ist folgendes:
1. Was bedeutet "Label index"? Was bedeuted "busy status"? Wird da ausgelesen, ob die Datei noch in Gebrauch ist?
Ich habe mir gedacht, dass der Übertragungsstatus einer Datei ausgelesen wird, indem ich die Dateigrösse auslese, 10 Sekunden warte, die Dateigrösse erneut auslese, die beiden Dateigrössen vergleiche und wenn die Dateigrössen gleich sind, zählt die Datei als fertig übertragen. Macht das "busy status" oder "label index"?
2. Könnte man nicht die auf die OS9-Kiste übertragenen Dateien nach der Beendigung der Übertragung erst mal in einen Ordner verschieben (move), und diesen anderen Ordner vom 2. Übertragungsscript (zum Server) überwchen lassen (mit dem dazugehörigen löschen fertig übertragener Dateien)?
3. Was das "ständige Laufen" des Scripts anbelangt, hätte ich mir gedacht, dass alle Anweisungen in einer "on idle" - "end idle"-Schleife stehen. Was spricht da dagegen?

Frodo

PS: vielen Dank für Deine Mühe!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 05.12.2004 - 14:53    Titel: Antworten mit Zitat

Hallo Frodo,

1. 'label index' ist nur das Finder-Etikett. Ich dachte mir, dass ich den Ordnerwächter einfach mal nachsehen lasse, ob was neues im Ordner da ist. Wenn ja, markiert der Ordnerwächter alle neuen Dateien mit einem Etikett.

'busy status' gibt tatsächlich an, ob die Datei in Gebrauch ist, also auch, ob sie noch in den Ordner hineinkopiert wird oder bereits vollständig ist.

Die Überwachung der Dateigröße ist momentan die einzige Methode, die uns bei OS X bleibt, da 'busy status' dort nicht brauchbar ist.

2. Die Übertragung der Dateien in einen weiteren Ordner finde ich unnötig. Das verursacht nur unnötigen Traffic auf deiner Kiste. Im Prinzip haben wir die Dateien ja schon 'ausgesondert', indem wir ihnen ein Etikett verpasst haben. Das zweite Skript braucht sich nur die 'etikettierten' Dateien zu nehmen. Nach dem Upload könnte das zweite Skript das Etikett der jeweiligen Datei wieder ändern (z.B. label index 2). Somit wäre es sogar denkbar, dass wir das Löschen der Dateien wieder vom ersten Skript übernehmen lassen, indem wir noch entsprechende Anweisungen einbauen. Also alle Dateien suchen, die Etikett 2 haben in eine Liste verfrachten und diese Dateien dann löschen lassen. Das ist aber nur eine Spielerei. Ich denke dass die jeweilige Datei am besten gleich vom zweiten Skript gelöscht werden sollte, sobald der Upload fertig ist (vorausgesetzt der Upload lässt sich per Skript überwachen, schließlich sollte die Datei ja vollständig auf dem Server sein, bevor sie gelöscht wird - muss ich aber erst testen).

3. Alle Anweisungen stehen im Prinzip in der "on idle - end idle"-Schleife, da der "doJob"-Handler ja in der idle-Schleife aufgerufen wird. Zum Testen ist das wesentlich praktischer, da ich im Skript einfach einen Aufruf dieses Handlers platzieren muss, um einen einmaligen Ablauf auch im Skripteditor zu testen.

Dagegen spricht eigentlich nichts - es ist auch die einzige Möglichkeit, die uns hier bleibt.. Es gibt halt immer wieder Leute, die sich daran stören, dass in der Programmpalette dann ständig die Symbole der laufenden Skripte zu sehen sind. Das Skript braucht natürlich auch etwas Rechenleistung, sobald es wieder aktiv wird. Aber das ist Erbenzählerei.

Ich werde jetzt mal ein paar Versuche zum Upload starten.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
FrodoBeutlin
•->
•->


Anmeldedatum: 04.12.2004
Beiträge: 6
Wohnort: Oberbayern

BeitragVerfasst am: 05.12.2004 - 15:04    Titel: Antworten mit Zitat

Hallo Snow,
leider bin ich - was AppleScript anbelangt - ziehmlicher Laie. Ich kann´s nur nochmal betonen: Herzlichen Dank für Deine Mühe.
mit den besten Grüssen aus Mittelerde
Frodo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 05.12.2004 - 15:23    Titel: Antworten mit Zitat

Hallo Frodo,

hier das Upload-Skript:

property WatchFolder : ""
on doJob()
if WatchFolder = "" then
set WatchFolder to ¬
choose folder with prompt "Welcher Ordner soll überwacht werden?"
end if
tell application "Finder"
set FileList to every file of WatchFolder whose label index is 1
end tell
if FileList is not {} then
repeat with theFile in FileList
set theFile to theFile as alias
try
-- timeout für größere Dateien evtl. höher einstellen
with timeout of 300 seconds
tell application "URL Access Scripting"
upload theFile to ¬
"ftp://USER:PASSWORT@DOMAIN/PFAD/"
quit
end tell
end timeout
tell application "Finder"
set label index of theFile to 2
move theFile to the trash
end tell
on error errmsg number errNr
display dialog "Fehler " & (errNr as text) & ": " & errmsg
end try
end repeat
end if
end doJob

on idle
my doJob()
return 300
end idle

on run
my doJob()
end run


Beim Upload-Befehl von URL-Access-Scripting gibt es noch ein paar Optionen.

with progress -- Bringt beim Upload einen Fortgangsbalken auf den Schirm, ist aber bei einem Skript, das möglichst im Hintergrund laufen soll, nicht so sinnvoll.

without binhexing -- Dateien ohne Endung, die der Server als Bild erkennt, werden komprimiert und als ".hqx" hochgeladen, wenn man without binhexing nicht verwendet. Ich bekam jedoch immer eine Fehlermeldung, wenn ich dies versucht habe. Man sollte also evtl. vorher prüfen, ob die entsprechenden Dateien alle die richtige Endung haben und die Dateiliste ggf. anpassen.

with replacing -- ergab bei mir auch stets eine Fehlermeldung. Doppelte Dateien werden aber auf meinem Webspace selbstständig durchnummeriert.

upload directory -- als gesamten Ordner hochladen, ist aber ja nur bei Ordnern sinnvoll

with authentication -- zeigt den Authentifizierungs-Dialog, was bei einem Backgroundscript ja wohl auch eher stört.

Wir haben die Zugangsdaten ja bereits im Upload-String eingebaut.
Wenn du deine Zugangsdaten "etwas" schützen möchtest, wäre folgende Ergänzung des Skripts nötig:

property theUser : ""
property thePass : ""

if theUser = "" then
set theUser to ¬
text returned of (display dialog ¬
"Bitte Benutzernamen eingeben" default answer "")
end if

if thePass = "" then
set thePass to ¬
text returned of (display dialog ¬
"Bitte Passwort eingeben" default answer "")
end if

set theUrl to "ftp://" & theUser & ":" & thePass & "@DOMAIN/PFAD/"


Die Zugangsdaten bleiben so in den property Variablen gespeichert, bis das Skript neu kompiliert wird. Wenn man das Skript im Skripteditor öffnet, sind die Daten nicht zu sehen. Allerdings ist es auch nicht besonders schwierig, die Daten mit einem anderen AppleScript auszulesen - aber das setzt ja dann wenigstens AppleScript-Kenntnisse voraus. Ein gewisser Schutz ist also schon gegeben.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 05.12.2004 - 16:08    Titel: Antworten mit Zitat

Jetzt habe ich das Skript nochmal komplett geschrieben inkl. Abfrage des Benutzernamens und des Passworts.

Beim Upload per URL Access Scripting habe ich "quit" entfernt, da dies ja innerhalb einer Schleife stattfindet. So wurde bisher URL Access Scripting immer wieder beendet und bei der nächsten Datei sofort wieder gestartet.
Stattdessen lasse ich nach der Schleife nachsehen, ob URL Access Scripting noch unter den laufenden Prozessen ist - wenn ja, wird es beendet.

Hier das Skript:

----------------------------------------------------------
-- Variablen zur Speicherung der wiederholt benötigten Daten --
----------------------------------------------------------

property WatchFolder : ""
property theUser : ""
property thePass : ""

-- hier wird die ganze Arbeit getan
on doJob()
-- wenn noch kein Ordner zur Überwachung angegeben ist
if WatchFolder = "" then
set WatchFolder to ¬
choose folder with prompt "Welcher Ordner soll überwacht werden?"
end if
-- Benutzername noch nicht eingegeben
if theUser = "" then
set theUser to ¬
text returned of (display dialog ¬
"Bitte Benutzernamen eingeben" default answer "")
end if
-- Passwort noch nicht gespeichert
if thePass = "" then
set thePass to ¬
text returned of (display dialog ¬
"Bitte Passwort eingeben" default answer "")
end if
-- Zusammensetzen von URL
set theUrl to "ftp://" & theUser & ":" & thePass & "@DOMAIN/PFAD/"
-- Welche Dateien sollen hochgeladen werden?
-- Hier alle mit Etikett 1
tell application "Finder"
set FileList to every file of WatchFolder whose label index is 1
end tell
-- nur wenn wirklich Dateien vorhanden sind muss was getan werden
-- ist doch klar, oder?
if FileList is not {} then
repeat with theFile in FileList
set theFile to theFile as alias
try
-- timeout für größere Dateien evtl. höher einstellen
with timeout of 300 seconds
tell application "URL Access Scripting"
-- hier erfolgt der Upload
upload theFile to theUrl
end tell
end timeout
-- nach dem Upload bekommt die Datei ein anderes Etikett
tell application "Finder"
set label index of theFile to 2
-- und wird in den Papierkorb verfrachtet
move theFile to the trash
end tell
on error errmsg number errNr
display dialog "Fehler " & (errNr as text) & ": " & errmsg
end try
end repeat
-- Falls URL Access Scripting noch läuft, soll es hier
-- beendet werden. Das ist sinnvoller als innerhalb der Schleife
tell application "Finder"
set ProcList to name of every process
if ProcList contains "URL Access Scripting" then
tell application "URL Access Scripting" to quit
end if
end tell
end if
end doJob

-- der idle Handler sorgt dafür, dass das Skript wiederholt
-- ausgeführt wird. Die idle time beträgt hier 300 Sekunden
on idle
my doJob()
return 300 -- Sekunden
end idle

-- Zum Testen des Skripts im Skripteditor ist hier der Run Handler
on run
my doJob()
end run

_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
FrodoBeutlin
•->
•->


Anmeldedatum: 04.12.2004
Beiträge: 6
Wohnort: Oberbayern

BeitragVerfasst am: 06.12.2004 - 18:15    Titel: Antworten mit Zitat

Hallo Snow,

erstmal danke für die prompte Lieferung; allerdings habe ich immer noch einige Fragen:
1. Wie kann ich der Variablen "WatchFolder" einen festen Ordner zuweisen (etwa:
set WatchFolder to folder "lokaler_Ordner" of startup disk
2. Was bedeutet
set theInfoLokal to info for oneFileLokal
3. Ich habe Dein Script aufgeteilt in 2 Scripte; das erste läuft tadellos, das 2. macht nichts. Woran liegt´s?

Erstes Script (hier fehlen noch feste Ordnerpfade, funktioniert):

property WatchFolderLokal : ""
on doJob()

if WatchFolderLokal = "" then
set WatchFolder to ¬
choose folder with prompt "Welcher Ordner soll überwacht werden?"
end if
-- nur zu Testzwecken
-- tell me to activate
-- display dialog "Los geht's" giving up after 5
-- Ende Test
tell application "Finder"
set LabelList to every file of WatchFolderLokal whose label index > 1
if LabelList is not {} then
repeat with oneFile in LabelList
move oneFile to trash
empty trash
end repeat
end if

set FileList to every file of WatchFolderLokal whose label index is 0
if FileList is not {} then
repeat with oneFile in FileList
set theInfo to info for oneFile
if busy status of theInfo = false then
set label index of oneFile to 1
end if
end repeat
end if
end tell
end doJob

on idle
my doJob()
return 10
end idle

Zweites Script (hier fehlen auch noch feste Ordnerpfade, funktioniert aber nicht):

property WatchFolderServer : ""
property WatchFolderLokal : ""
on doJob()

if WatchFolderServer = "" then
set WatchFolder to ¬
choose folder with prompt "Wo ist der Serverordner?"
end if
if WatchFolderLokal = "" then
set WatchFolderLokal to ¬
choose folder with prompt "Wo ist der lokale Ordner?"
end if

tell application "Finder"
set FileListLokal to every file of WatchFolderLokal whose label index is 1
if FileListLokal is not {} then
repeat with oneFileLokal in FileListLokal
set theInfoLokal to info for oneFileLokal
copy oneFileLokal to WatchFolderServer
set FileListServer to every file of WatchFolderServer
if FileListServer is not {} then
repeat with oneFileServer in FileListServer
set theInfoServer to info for oneFileServer
if busy status of theInfoServer = false then
set label index of oneFileLokal to 2
end if
end repeat
end if
end repeat
end if
end tell
end doJob

on idle
my doJob()
return 10
end idle

4. Der Kopiervorgang, den Du in dein Script per Upload eingebaut hast, ist toll, aber in meinem Fall ist das ein ganz normaler (Apple Filing Protocoll) Kopiervorgang auf einen Server, der "unser" Apple-Protokoll auch versteht.
5. Wie bekomme ich denn diese Formatierungen auf dieser Seite hin? Mein hier gepostetes Script ist Plain Text, was im Gegensatz zu den von Dir geposteten Scripten einfach lächerlich aussieht.

Vielen Dank nochmals

Frodo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 06.12.2004 - 21:14    Titel: Antworten mit Zitat

Hallo Frodo,

gehen wir's an:

1. Im Prinzip wird der Variablen "WatchFolderLokal" bereits ein fester Ordner zugewiesen, da der Auswahldialog ja nur einmal erscheint. Danach ist der Pfad zum Ordner in dieser Variablen gespeichert. In deinem obigen Skript 1 heißt die property "WatchFolderLokal", den gewählten Ordner legst du aber in der Variablen "WatchFolder" ab - der Auswahldialog erscheint dann bei jedem neuen Skriptablauf, da der Pfad in keiner property abgelegt war. Eine temporäre Zuweisung zu einer Variablen genügt da nicht.

Du kannst allerdings auch den kompletten Ordnerpfad angeben:

set WatchFolderLokal to alias "Macintosh HD:Dokumente:undsoweiter:meinOrdner:"

2. 'info for' ist ein Befehl der Standard Additions (ziehe diese Scripting Addition mal auf deinen Skripteditor und schau dir die Befehle an). 'info for' ermöglicht es, einige Informationen über eine Datei oder einen Ordner zu erhalten. In unserem Fall ist das "busy status".
Wir verfrachten also die gesamte Information, die wir per 'info for' erhalten in die Variable "theInfo". Danach können wir aus dieser Variablen die verschiedenen Informationen abrufen - in unserem Fall nur 'busy status'.

3. Das zweite Skript läuft nicht, weil 'copy' in AppleScript eine andere Bedeutung hat.

Variablen können einen Wert auf zweierlei Weisen erhalten (siehe Workshop-Artikel "Variablen")

set x to 100
copy 200 to y


In folgender Zeile liegt daher der Fehler:

copy oneFileLokal to WatchFolderServer

In meinem Test lautet die Referenz zu der Datei im überwachten Ordner:

file "MacOSXTipps.pdf" of folder "ActionTest"

Durch den Fehler in deiner oben genannten Zeile enthält die Variable "WatchFolderServer" nun keine Referenz zum Serverordner mehr sondern die Referenz zu der ersten Datei.

In der Folgezeile
set FileListServer to every file of WatchFolderServer
tritt dann der Fehler auf.

get every file of file "MacOSXTipps.pdf" of folder "ActionTest"
--> {}


Logisch! Alle Dateien innerhalb einer Datei zu ermitteln ist Schwachsinn.

Abhilfe:
Die fehlerhafte Zeile schreibst du nun so:

duplicate oneFileLokal to alias WatchFolderServer

4. Ich bin irgendwie automatisch von einem Webserver ausgegangen. Aber so ist's natürlich dann wesentlich besser.

5. Für die Skriptformatierung brauchst du von meiner Download-Seite mein Skript "Codeformatter for phpBB2". Dieses Skript benötigt das Shareware-Programm "Text-Edit Plus". Text-Edit Plus ist dafür verantwortlich, die genauen Formatierungen des Skripttextes zu ermitteln.

Unter OS X kannst du den "Codeformatter 3.0" benutzen. Dieser kommt ohne Text-Edit Plus aus, benötigt aber die kostenlose Scripting Addition "Satimage OSAX".

So, jetzt dürfte so langsam Klarheit herrschen. Cool
Und für alle, die nicht wissen, wo das Auenland liegt - es liegt in Oberbayern.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 07.12.2004 - 14:22    Titel: Antworten mit Zitat

Snow hat Folgendes geschrieben:
Somit wäre es sogar denkbar, dass wir das Löschen der Dateien wieder vom ersten Skript übernehmen lassen

Idea eindrücklich was Snow da zusammenbaut, das schöne ist dass man in der Aufbauphase eines Skripts zuschauen kann.
Darum nur ganz segge Zwischenfrage:
Wie gehts du um mit time-out Problem? Wenn ich mit AS den Standardordner mit 127 MB über Ethernet 100 auf die clients verteile würde ich im timeout landen für den 2. teil des Skripts. Mache ich was falsch?
habe natürlich beisher keine idle-handler eingesetzt, ist das der Grund?
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 07.12.2004 - 21:54    Titel: Antworten mit Zitat

Hallo Frodo,

da hat Willy gut aufgepasst. Ein Etikett zuweisen geht ruck zuck. Dateien duplizieren kann, je nach Dateigröße, schon mal etwas länger dauern.

Ein AppleEvent hat einen timeout Wert von 60 Sekunden. Wenn eine Datei für den Kopiervorgang länger als 60 Sekunden braucht, bekommst du einen hübschen Fehler. Deshalb muss der Default-Timeout-Wert verlängert werden.

-- bei xxx Angabe in Sekunden
with timeout of xxx seconds
-- hier die zeitkritischen Anweisungen platzieren
end timeout

In meinem Beispiel mit dem Upload per URL Access Scripting hatte ich einen timeout von 300 Sekunden - also 5 Minuten verwendet. Du kannst den Wert aber auch ruhig noch höher einstellen. Sicherlich kannst du das selbst am besten abschätzen, da du die Geschwindigkeit deines Netzwerks und die Dateigrößen wohl am besten kennst.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 07.12.2004 - 22:07    Titel: Antworten mit Zitat

Ach du Schreck! Warnung! verliebt Winke winke
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
FrodoBeutlin
•->
•->


Anmeldedatum: 04.12.2004
Beiträge: 6
Wohnort: Oberbayern

BeitragVerfasst am: 07.12.2004 - 23:16    Titel: Antworten mit Zitat

...
heisst das dann, dass jeder Kopiervorgang 300 Sekunden dauert, auch wenn die Datei nur ein paar kB gross ist?

Die beiden Scripte habe ich heute (incl. der letzten Verbesserungstipps von Snow) getestet. Hat alles tadellos funktioniert, mit einer Ausnahme:
Während der Mittagspause ist das iBook 500 in den Ruhezustand gefallen; beim Aufwecken war dann für beide Scripte eine Fehlermeldung da: Nennt mich DAU, ich weiss sie nicht mehr, werde das Ganze aber morgen nachspielen und die Fehlermeldung dann hier posten.

Danke und gute Nacht
(Ich bin normalerweise um 10.00 Uhr noch nicht müde, aber nachdem letzte Nacht das liebe 7-jährige Töchterlein einige Male meinte, in ihrem Zimmer summe eine Biene...)

Frodo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum Alle Zeiten sind GMT + 2 Stunden
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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