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

Invalid key Form? - Probleme mit der Ordnergr–þe

 
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
hiro
•->
•->


Anmeldedatum: 25.12.2001
Beiträge: 15

BeitragVerfasst am: 28.12.2001 - 19:39    Titel: Invalid key Form? - Probleme mit der Ordnergr–þe Antworten mit Zitat

Ich bab hier ein script, das den Inahlt von Ordnern scannt und die Größe des jeweiligen Ordners ausgibt. Nun hätte ich gern, daß 2 Aktionen folgen: 1. falls der Ordner kleiner als 650 MB ist, soll er gelöscht werden. Ist er größer als 650 MB soll er bleiben, wo er ist und das Script soll fortfahren - also weitere Ordner scannen.
Hintergrund: ich habe einen Ordner, in den täglich ne Menge Daten geworfen werden. Mein Backup Programm wird jeden Tag zur selben Zeit tätig und legt den Inahlt des Ordners automatisch in mehreren Unterordnern an, falls mehr als 650 MB drin liegen. Im Ordner "Backup" liegen also ggf. mehrere Ordner, die "backup #01" "...#02" etc. heißen.
Das Script geht die nun alle durch, sagt mir, wie groß die Dinger sind - und soll dann tätig werden.
Ich krieg aber eine "Invalid key form" entgegengeschleudert. Weiß einer warum?
Hier das Stück Script, das mir Probleme macht:

tell application "Finder"
activate
if (exists the folder "backup #01" of folder "Backup" of startup disk) then
select the folder "backup #01" of folder "Backup" of startup disk
end if
--get a list of the size of each selected item
try
set size_list to (size of selection) as list
on error
beep
display dialog "Nichts ausgewählt." buttons {"Abbrechen"} default button 1
end try

--add the list
set the total_size to ""
repeat with this_item in size_list
set the total_size to the total_size + this_item
end repeat

--sort and shorten to one decimal place
if the total_size > 1.0E+9 then
set the first_part to (the total_size div 1.0E+9)
set the second_part to (the total_size mod 1.0E+9) div 100000000
set the total_size to (the first_part & "." & the second_part as string) & " GBytes"
else if the total_size > 1000000 then
set the first_part to (the total_size div 1000000)
set the second_part to (the total_size mod 1000000) div 100000
set the total_size to (the first_part & "." & the second_part as string) & " MBytes"
else if the total_size > 1000 then
set the first_part to (the total_size div 1000)
set the second_part to (the total_size mod 1000) div 100
set the total_size to (the first_part & "." & the second_part as string) & " KBytes"
else
set the total_size to the total_size & " Bytes"
end if

--display the answer
display dialog "Der Backup Ordner # 1 enthält: " & the total_size buttons {"OK"} default button 1
if (total_size of the folder "backup #01" of folder "Backup" of startup disk > 6500000) then
delete folder "backup #01" of folder "Backup" of startup disk
end if
end tell


Wo liegt der Fehler? Wer kann helfen?

hiro
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 28.12.2001 - 20:12    Titel: Invalid key Form? Antworten mit Zitat

Der Fehler dürfte hier liegen:

else
set the total_size to the total_size & " Bytes"
log total_size
log class of total_size
end if

--display the answer
display dialog "Der Backup Ordner # 1 enthält: " & the total_size buttons { "OK" } default button 1
if (total_size of the folder "backup #01" of folder "Backup" of startup disk) > 6500000 then
delete folder "backup #01" of folder "Backup" of startup disk
end if


Die Variable "total_size" enthält Zahlenwerte. Bis zu dieser Stelle:

set the total_size to the total_size & " Bytes"

Im obigen Skriptausschnitt habe ich zwei log-Kommandos eingefügt:

log total_size
log class of total_size


Dadurch wird 1. der Wert von "total_size" im Eventprotokoll angezeigt und 2. die Klasse der Variable.

Wenn du das ausprobierst, wirst du im Eventprotokoll folgende Einträge finden:

(*0, Bytes*)
(*list*)


"total_size" enthält also die Werte "0" (mein Testordner war noch ganz leer) und " Bytes" - also einen Textwert.
Es handelt sich nun um eine Liste!

Deshalb kannst du in der Zeile:

if (total_size of the folder "backup #01" of folder "Backup" of startup disk) > 6500000 then

auch nicht prüfen, ob die Liste > 6500000 ist. Die Werte lassen sich einfach nicht vergleichen.

Der Vergleich funktioniert wieder, wenn du es so schreibst:

--display the answer
display dialog "Der Backup Ordner # 1 enthält: " & the total_size buttons { "OK" } default button 1
if (item 1 of total_size) > 6500000 then
delete folder "backup #01" of folder "Backup" of startup disk
end if

_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com


Zuletzt bearbeitet von Snow am 24.02.2003 - 23:24, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
hiro
•->
•->


Anmeldedatum: 25.12.2001
Beiträge: 15

BeitragVerfasst am: 28.12.2001 - 20:21    Titel: Invalid key Form? Antworten mit Zitat

He snow, Danke vielmals!
Klar, völlig logisch - jetzt, wo ichs schwarz auf weiß vor mir sehe.
Und ich bin mal so unverschämt, gleich noch eine Zusatzfrage zu stellen: diese Schleife wiederholt sich ja nun ebenso oft, wie Backup-Ordner vorhanden sind. Ist einer kleiner 650 MB (also CD Größe), dann wird er gelöscht und das Script fährt fort. Ist ein Ordner größer als 650 MB soll er bleiben, wo er ist und das Script soll den nächsten Ordner checken. Mit
return
ist ja in dem Falle wohl nichts zu machen. Dann hört ja alles auf.
Wie bringe ich denn dem Script bei, in dem Falle NICHTS mit dem Ordner zu machen, sondern einfach fortzufahren?
mit: if... - else ... vielleicht?
hiro
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 28.12.2001 - 20:36    Titel: Invalid key Form? Antworten mit Zitat

Ja, mit if ... else ... end if

if (item 1 of total_size) < 6500000 then
delete folder "backup #01" of folder "Backup" of startup disk
else
-- do nothing
end if


Aber so wie es war, müsste es auch funktionieren.

if (item 1 of total_size) < 6500000 then
delete folder "backup #01" of folder "Backup" of startup disk
end if

_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com


Zuletzt bearbeitet von Snow am 24.02.2003 - 23:25, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
hiro
•->
•->


Anmeldedatum: 25.12.2001
Beiträge: 15

BeitragVerfasst am: 28.12.2001 - 20:56    Titel: Invalid key Form? Antworten mit Zitat

Das wars. Nochmal vielen Dank, Snow!
Du hast mir blutigem Script Newbie enorm geholfen.
hiro
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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
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