1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

brauche hilfe bei einem applescript

Dieses Thema im Forum "macOS & OS X" wurde erstellt von steme82, 02.05.08.

  1. steme82

    steme82 Golden Delicious

    Dabei seit:
    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
     
  2. space

    space Neuer Berner Rosenapfel

    Dabei seit:
    02.12.05
    Beiträge:
    1.950
    Code:
    if not (exists file fileName) then
    Gruss
     
  3. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    So rein aus Neugierde wüßte ich gerne was das Ding schlußendlich bezweckt, bzw. tun soll. Also der konkrete Einsatzzweck sozuagen.
    Gruß Pepi
     
  4. steme82

    steme82 Golden Delicious

    Dabei seit:
    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^^
     
  5. steme82

    steme82 Golden Delicious

    Dabei seit:
    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
     
  6. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    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
     

Diese Seite empfehlen