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

Wiederholter Versuch mit Timeout

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


Anmeldedatum: 20.04.2005
Beiträge: 11

BeitragVerfasst am: 20.04.2006 - 14:16    Titel: Wiederholter Versuch mit Timeout Antworten mit Zitat

Hallo!
Wie kann ich ein Script dazu bringen, praktisch unendlich lang zu versuchen eine Datei zu öffnen (auf einem Image das in der Zwischenzeit gemountet wird) und das Ganze abzublasen, wenn es die Datei nach, sagen wir, 3 Minuten noch immer nicht gibt?
Danke!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
till
•--->
•--->


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

BeitragVerfasst am: 20.04.2006 - 16:51    Titel: Antworten mit Zitat

Zitat:

-- normal so (geht aber bei repeat-loops nid)
with timeout of 180 seconds
   -- dein script
end timeout

--============== kompliziert aber mir is nix besseres eingefalle =============

tell application "Finder"
   set cur to word 6 of ((current date) as string) -- minuten
   set abruch to cur + 3 as number -- plus 3 minuten = abruch (bei 59 sek sind halt nur 2 min)
   
   repeat
      
      -- DEINE scriptinhalt
      
      -- TIME VERGLEICH
      set cur to word 6 of ((current date) as string) as number
      if abruch = cur then
         exit repeat -- wenn current minutes = abruch raus
      end if
      -- TIME v. ende
   end repeat
end tell




gn8 ti
_________________
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
Al Cohole
•->
•->


Anmeldedatum: 20.04.2005
Beiträge: 11

BeitragVerfasst am: 20.04.2006 - 17:04    Titel: Antworten mit Zitat

Cool, das sollte mit der „normalen“ Methode funktionieren.

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


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

BeitragVerfasst am: 20.04.2006 - 17:08    Titel: Antworten mit Zitat

hier nochwas um meine ehre zu retten

Zitat:

set start to current date

repeat
   
   set ziel to current date
   if ziel - start = 180 then -- 180 sec = 3 min
      exit repeat
   end if
end repeat

--geht doch


_________________
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
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 20.04.2006 - 17:12    Titel: Antworten mit Zitat

Ich habe gestern ein ähnliches Problem gehabt und so gelöst:

Code:

retries= 90
repeat
   if file_can_be_opened() then -- hier ist mein Test
      exit repeat -- erfolg
   end if
   set retries to retries - 1
   if retries > 0 then
      delay 2
   else
      exit repeat -- fehlgeschlagen
   end if
end repeat

if file_can_be_opened() then
    -- mach was damit
end if

on file_can_be_opened()
    --  was immer Du testen mußt
end on file_can_be_opened


Ich mache also 90 Durchläufe mit jeweils 2 Sekunden Pause. Wenn die durch sind, sind ca. 180 Sekunden vergangen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
till
•--->
•--->


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

BeitragVerfasst am: 20.04.2006 - 18:09    Titel: Antworten mit Zitat

-- ich frage mich wie das bei dir geht
--retries = 90 -- var retries is nid def

set retries to 90
set start to current date
repeat
   set retries to retries - 1
   
   --irgendeine action -beeinflusst die dauer
   
   if retries > 0 then
      delay 2
   else
      exit repeat -- fehlgeschlagen
   end if
end repeat

if file_can_be_opened() then
end if

on file_can_be_opened()
   -- end on file_can_be_opened --?
end file_can_be_opened

set ziel to current date
set sekunden to ziel - start



test mal was rauskommt
_________________
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: 20.04.2006 - 18:27    Titel: Antworten mit Zitat

irgendwie komm ich mit deinen handlern nid klar sry

if file_can_be_opened() then
-- mach was damit
end if
_________________
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
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 20.04.2006 - 18:55    Titel: Antworten mit Zitat

Naja... Applescript Anfänger halt. Wink

Natürlich steht da "set retries to 90"

Zudem habe ich meinen Code nur angepaßt. der wirkliche sieht anders aus.

Und was die Genauigkeit angeht: Für solche Fälle wie diesen und auch meinen (da sind es ca. 20 Sekunden) Pfeiff ich darauf. Das muß halt nur in einer überschaubaren Zeit terminieren.

Hier ist was getestetes
Code:
set retries to 90
repeat
   if file_can_be_opened() then
      exit repeat
   end if
   set retries to retries - 1
   if retries > 0 then
      delay 2
   else
      exit repeat
   end if
end repeat

if file_can_be_opened() then
   "Juchhu"
else
   "Dammisch"
end if

on file_can_be_opened()
   try
      do shell script "ls /tmp/x"
   on error
      return false
   end try
   return true
end file_can_be_opened
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
till
•--->
•--->


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

BeitragVerfasst am: 20.04.2006 - 19:29    Titel: Antworten mit Zitat

Zitat:

set start to current date

-- Dein letztes script

set ziel to current date
set sec to ziel - start
get sec

-- da kommen ganze 224 sekunden raus! das sind 44 mehr als gewoltl außerdem gibt es bei jedem durchlauf 2 sek in denen nicht versucht wird


_________________
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
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 20.04.2006 - 19:43    Titel: Antworten mit Zitat

till hat Folgendes geschrieben:
da kommen ganze 224 sekunden raus! das sind 44 mehr als gewoltl außerdem gibt es bei jedem durchlauf 2 sek in denen nicht versucht wird

Naja... Dazu habe ich ja schon was gesagt:
Skeeve hat Folgendes geschrieben:
Und was die Genauigkeit angeht: Für solche Fälle wie diesen und auch meinen (da sind es ca. 20 Sekunden) Pfeiff ich darauf. Das muß halt nur in einer überschaubaren Zeit terminieren.

Ich versteigere mich zu der Behauptung, daß der OP auch nicht so genau auf die Zeit 3 Minuten Wert legt...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
till
•--->
•--->


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

BeitragVerfasst am: 20.04.2006 - 20:25    Titel: Antworten mit Zitat

aber mein arbeitspeicher... *g
noch hab ich keinen 8 kern powermac nachfolger
_________________
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
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 20.04.2006 - 20:28    Titel: Antworten mit Zitat

till's ehrenrettungs-script scheint mir die beste lösung.
allerdings mit einer kleinen änderung:

if ziel - start > 180 then -- 180 sec = 3 min

da versuche, etwas zu tun, was nicht geht, z.T. auch mal länger als 1 sec. dauern, bis ein fehler aufläuft (besonders auf netzwerk-volumes), und dann kann 180 schon überschritten sein.
_________________
- anholn deit kriegen -
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Al Cohole
•->
•->


Anmeldedatum: 20.04.2005
Beiträge: 11

BeitragVerfasst am: 21.04.2006 - 18:09    Titel: Antworten mit Zitat

Danke für die vielen weiteren Antworten!
Das Script würde viiiel einfacher, mit etwas timeout und repeat, auf jedenfall funktionieren. Würde deshalb, weil leider etwas völlig anderes, leider nicht mittels AppleScript oder ähnlichem lösbares, dazwischen gekommen ist.

Hätte aber funktioniert! Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
till
•--->
•--->


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

BeitragVerfasst am: 21.04.2006 - 18:50    Titel: Antworten mit Zitat

nichts ist unlösbar... her damit
brauch wieder was dass ich heut nacht nid schlafen kannn....
_________________
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