Spezielle Frage an AS Profis

Ferris

Mitglied
Thread Starter
Mitglied seit
18.12.2002
Beiträge
26
Hallo zusammen,

ist es mit Apple Script möglich den verfügbaren Platz auf einer Platte auszulesen und diesen dann z.B. einem Ordner als "Name" zu geben?

Konkret würde das so aussehen: Festplatte hat z.B. 23GB frei, AS liest das aus und nennt einen bestehenden Ordner um in -> 23GB

Klar was ich meine :D

Wenn ja, wie muss so ein Script aussehen? Könnte das einer hier bastelln?

Wenn es nicht mit Ordnern gehen sollte tuts auch eine Datei die so heisst. Es muss eben sofort ersichtlich sein ohne ein Zusatzprogramm öffnen zu müssen.
Das ganze sollte dann in bestimmten Abständen "abgeglichen" werden. Also z.B. das Script sollte automatisch alle 3 Stunden laufen.

Danke für eure Hilfe!
 

IceHouse

Mitglied
Mitglied seit
03.06.2002
Beiträge
691
Ich gebe Dir einen Gedankenanstoss, habe aber z.Zt. nicht die Zeit es Dir Mundgerecht zu servieren:

--
-- Wir ermitteln, wieviel Prozent der Bootplatte frei ist
--
set the percent_free to (((the free space of the disk "IceX") / (the capacity of the disk "IceX")) * 100) div 1

--
-- Wir ermitteln, wieviel Megabytes auf der Bootplatte frei sind
--
set this_disk to disk "IceX"
set final_free_space to "Free Space on IceX: " & (free space of this_disk) div 1024 div 1024 div 1000 & " GB" & " / " & percent_free & "%"

Anhand dieser Beispiele, die ich mir mal fuer ein Ircle Systeminfoscript programmiert habe, laesst sich leicht eine Abfrage deines Wunsches erstellen und auf einen Ordnernamen eines neu erzeugten Ordners anwenden.

Gruss
IceHouse
 

Andi

Mitglied
Mitglied seit
16.05.2002
Beiträge
8.659
Speicherplatz

Hallo Ferris,

ich wollte Dir eigentlich eine elegante Lösung des Problems präsentieren, damit mal was los wird in diesem Forum.

Der Denkanstoß von IceHouse war ja schon nicht schlecht. Bei dieser Rechnung bekommst Du aber bei 999MB 0GB angezeicgt, da div nur Ganzzahlen aus der Division liefert.

Meine Idee war es, das Ganze in eine Ordneraktion einzubinden, welche an die Festplatte gehängt wird.

set alert_message to free space of disk "Namen Deiner Festplatte" as number --der freie Speicherplatz in Bytes
set alert_message to alert_message / 1024 / 1024 / 1024 -- Umrechnung in Gigabyte
set alert_message to (round (alert_message * 100)) / 100 & " " & "GB frei" as text -- Rundung auf 2 Stellen nach dem Komma und Erzeugung der Meldung

Ordneraktionen, die Meldungen liefern (sogar sprechen!) gibt es für das Öffnen oder das Hinzufügen von Objekten. Die obigen Zeilen nur an die Stelle setzen, wo die Ordneraktion die Meldung definiert.

Wenn Dir die Anzeige in einem Ordner oder Filenamen lieber ist wäre das auch kein Problem. Der Name würde sogar an 1. Stelle erscheinen.

Leider ist es mir nicht gelungen unter Jaguar 10.2.2 mit dem Scripteditor eine lauffähige Ordneraktion zu erzeugen. Selbst wenn ich eine vorgefertigte Aktion in ein Neus Script paste und abspeichere, läuft die Aktion nicht.
Bug im Scripteditor? Werde mal bei Gelegenheit mit dem Studio versuchen.

Unter OS9 sollte es aber über eine Ordneraktion gehen.

Jetzt ist die Frage, welches System verwendest Du?

Um ein Script zeitgesteuert ablaufen zu lassen, brauchst Du eine Systemerweiterung. Für das OS 9 würde ich mir das noch zutrauen. Mit Scripts, die unter X im Hintergrund laufen habe ich noch keine Erfahrung.

Es gibt ein Programm iDo (Script scheduler), mit dem kannst Du Scripts zeitgesteuert laufen lassen. Kostet aber was und für X gibt es nur ne Beta.

Solltest Du Dich für iDo entscheiden:
PHP:
(* Dieses Script wurde von Andi für Ferris erstellt und zeigt den Freien Festplattenplatz in einem Ordner- oder Filenamen¬
dessen Kommentarfeld die erste globale Variable enthält. Der Name der Festplatte wird in der zweiten globalen Variablen¬
festgelegt.*)

property display_freediskspacefile_comment : "Dieses Objekt zeigt den freien Speicherplatz von Ferris´Festplatte"
property watch_out_disk : "Namen von Ferris´ Festplatte"

tell application "Finder"
	set myfreespace to free space of disk watch_out_disk as number
	set myfreespace_in_gb to myfreespace / 1024 / 1024 / 1024
	set myfreespace_in_gb_rounded to (round (myfreespace_in_gb * 100)) / 100 & " " & "GB frei" as text
	try
		ignoring application responses
			set name of (every item of disk watch_out_disk whose comment is the display_freediskspacefile_comment) to myfreespace_in_gb_rounded
		end ignoring
	end try
end tell
Kann ich Dir das anbieten.

Gruß Andi
 

Trainspotter

Mitglied
Mitglied seit
31.10.2002
Beiträge
552
ich habe zwar keine ahnung von apple script, aber...

...wenn es sich um OSX handelt ist der kernel doch unix, und unter unix kann man doch cron jobs generieren.

wäre es da nicht möglich das script als cronjob alle 3 stunden laufen zu lassen???
 

Andi

Mitglied
Mitglied seit
16.05.2002
Beiträge
8.659
...

Hallo Trainspotter,

Terminal ist eine gute Idee.

#!/bin/sh
while true
do
osascript ~/path/to/Ferris_Script
sleep 900
done

Müßte glaub ich so aussehen...

oder wenn das zu sehr ausbremst einen stündlichen Cron Job.

Es sollte auch möglich sein, alles über ein Terminal Script zu regeln. Ob die schneller laufen als die Apple Scripts?

Gruß Andi