• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

brauche hilfe bei einem applescript

steme82

Golden Delicious
Registriert
31.03.08
Beiträge
7
hallo,
habe ein kleines problem bei einem script:

Code:
tell application "Finder"
	activate
	set fileName to "Macintosh HD:account"
	if not file fileName exists then
		display dialog "lalalala"
	end if
end tell
es kommt dabei der fehler:

Code:
«class docf» "account" of «class sdsk» of application "Finder" kann nicht in Typ boolean umgewandelt werden.

da dieses script auf ungepatchten leopard 10.5 zum einsatz kommen soll, hilft es mir leider nicht irgendwas nachträglich zu installieren wie z.B. OSAX.

die prüfung ala "if file fileName exists then" funktioniert witziger weise ohne probleme.

mir fällt leider auch nichts ein wie ich das gesamte script so umstellen kann das ich jene funktionierende prüfung nutzen kann.

habe atm die totale blockade im hirn, hoffe einer von euch kann mir helfen
 

space

Neuer Berner Rosenapfel
Registriert
02.12.05
Beiträge
1.949
Code:
if not (exists file fileName) then

Gruss
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
So rein aus Neugierde wüßte ich gerne was das Ding schlußendlich bezweckt, bzw. tun soll. Also der konkrete Einsatzzweck sozuagen.
Gruß Pepi
 

steme82

Golden Delicious
Registriert
31.03.08
Beiträge
7
huhu,
naja das script ist lediglich nur eine stelle an der ich gerade hing. kurz gesagt wirds eigentlich nur eine fleißaufgabe für die ausbildung.
wie in einem anderen thread schon erwähnt sind wir im betrieb häufig dazu gezwungen rechner hintereinander 10-20x neu zustarten. den neustartteil und einen teil wo man per mausklick das laufende script abbrechen kann habe ich bereits. damit man nicht auf scriptebene jedesmal den useraccount und pass eingeben muss möchte ich das ganze um eine eingabemaske erweitern die per read/write user und pass auf der festplatte ablegt. diesem vorgang möchte ich nun diese prüfung vorschalten damit er einen nicht jedesmal aufs neue auffordert den user/pass einzugeben. bei abbruch des skriptes soll dann der finder die erstellten dateien wieder löschen und den papierkorb leer machen. So oder so ähnlich stelle ich mir das ergebniss vor.

ach ja und vielen dank für die antwort, ich habe alles probiert nur nicht die klammern in der ganzen sache drin zu lassen^^
 

steme82

Golden Delicious
Registriert
31.03.08
Beiträge
7
so langsam nähere ich mich dem ende..... glaube ich. folgende 3 scripte habe ich per automator aneinander gehangen und neustart.app genannt.

Code:
on run {input, parameters}
	tell application "Finder"
		activate
		set fileName to "Macintosh HD:account"
		if not (exists file fileName) then
			set the1 to open for access file "Macintosh HD:account" with write permission
			set the2 to display dialog "Bitte geben Sie den Accountnamen ein:" default answer "" buttons {"weiter"} default button 1
			if button returned of the2 is "weiter" then
				write text returned of the2 to the1
			end if
			close access the1
			
			set the1 to open for access file "Macintosh HD:pass" with write permission
			set the2 to display dialog "Bitte geben Sie ihr Passwort ein, sollten Sie kein Passwort gesetzt haben, so lassen Sie dieses Feld einfach leer und klicken Neustart" default answer "" buttons {"Neustart"} default button 1
			if button returned of the2 is "Neustart" then
				write text returned of the2 to the1
			end if
			close access the1
		end if
	end tell
end run

Code:
property theTime : 10
on run {input, parameters}
repeat while theTime is not 0
	set the1 to display dialog "Script beenden?
Neustart in " & theTime & " Sekunden" with icon caution giving up after 1 buttons {"Beenden"} default button 1
	if button returned of the1 is "Beenden" then
		display dialog "Script wurde beendet" buttons {"OK"} default button 1
		tell application "Finder"
			activate
			set fileName to "Macintosh HD:account"
			delete file fileName
		end tell
		tell application "Finder"
			activate
			set fileName to "Macintosh HD:pass"
			delete file fileName
			empty the trash
		end tell
		quit
		set theTime to 0
	end if
	set theTime to theTime - 1
end repeat
end run

Code:
on run {input, parameters}

set the1 to open for access file "Macintosh HD:account" with write permission
set the3 to open for access file "Macintosh HD:pass" with write permission
set the2 to read the1
set the4 to read the3

do shell script "sudo shutdown -r now" user name the2 password the4 with administrator privileges
	
	return input
end run

2 probleme habe ich da noch:

prob1 script2: beim 2. script schimpfen powerpcs und macpro's - auf allen tragbaren varianten gibts an der stelle keine probleme egal ob tiger oder leo. folgendes problem trit auf: es kommt ein gong in form einer akustischen ausgabe und das neustart.app hüpft im dock auf und ab und wartet auf einen einfachen klick bevor es weitermacht.

prob2 script3: warum mag der net die variablen the2 und the4 an der stelle lesen wo ich ihm sage starte neu? wenn ich dort die richtigen accountdaten in anführungszeichen einsetze startet er doch auch auf dem entsprechenden account.

würde mich über antworten tierisch freuen
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Dein Neustart Skript ist der Killer im wahrsten Sinne des Wortes. Es beendet nämlich die komplette GUI Session per kill, anstatt sie ordentlich zu beenden, und die Prozesse sauber zu beenden! Garnicht gut.

tell application "System Events" to restart
erledigt das so wie ein User der auf Neustart klickt wo das ordentlich gemacht wird.
Gruß Pepi