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

Laufende Nummern

Dieses Thema im Forum "AppleScript" wurde erstellt von space, 21.12.07.

  1. space

    space Neuer Berner Rosenapfel

    Dabei seit:
    02.12.05
    Beiträge:
    1.950
    Da mich die "Fenster mit Rahmen und Schatten" Screencapture Funktion mit cmd-shift-4-space stört, wollte ich mir ein AS schreiben, um das zu ändern.


    Code:
    tell application "Finder"
    	
    	set destFolder to path to desktop
    	set x to 1
    	
    	if x < 10 then
    		set z to "0"
    	else
    		set z to ""
    	end if
    	
    	if exists file ("Macintosh HD:Users:space:Desktop:Bild " & z & x & ".jpg") then
    		set x to x + 1
    	else
    		set x to x
    	end if
    	
    	
    	set destFile to (destFolder as string) & "Bild " & z & x & ".jpg"
    	set ssFile to quoted form of POSIX path of destFile
    	
    	do shell script "screencapture -io " & ssFile
    	
    end tell
    Damit das aber wirklich mal "fortlaufende" Nummern werden, muss die Zeile
    Code:
    set x to 1
    natürlich anders aussehen.
    Nur wie :eek: ? Könnt ihr mir helfen?


    Grüsse
    Space
     
  2. Xjs

    Xjs Prinzenapfel

    Dabei seit:
    04.10.07
    Beiträge:
    547
    Meine Loesung ist:

    Code:
    set x to do shell script "(ls ~/Desktop/Picture* &> /dev/null && ls ~/Desktop/Picture* > /tmp/lsblablubb2 && tail -1 /tmp/lsblablubb2 > /tmp/lsblablubb && tmp=$(cat /tmp/lsblablubb) && tmp=${tmp/.*} && tmp=${tmp#*Picture } && echo $tmp) || echo 1"
    Das ist ein kleines (naja...) Shell-Skript, das den Desktop ueberprueft, ob da Dateien namens Picture* liegen, wenn ja, zieht es sich die Nummer vom letzen per Substitution und gibt es aus (geht dann nach x), wenn nicht, gibt es 1 aus.
     
  3. Peter Maurer

    Peter Maurer Carmeliter-Renette

    Dabei seit:
    16.03.04
    Beiträge:
    3.274
    Versuch's mal mit einer Property statt einer einfachen Variable. Soviel ich weiss, merken sich AppleScripts ihre Properties. Oder erinnere ich mich da falsch?

    Alternativ koenntest Du auch in einer Schleife mit steigenden Zahlen ab 1 so lange ueberpruefen, bis der Platz frei ist.

    PS: Wozu die fuehrende Null? Der Finder (und jedes andere halbwegs ernstgemeinte Programm) sortiert auch so richtig.
     
  4. Xjs

    Xjs Prinzenapfel

    Dabei seit:
    04.10.07
    Beiträge:
    547
    Das Problem bei der Property waere ja, dass ein anderes Programm "Picture 1.png" erzeugen koennte, und das AppleScript das nicht merken wuerde. Mein sorgsam erhirnter Code im oberen Post ( :p ) funktioniert jedenfalls, hab's probiert.
     
  5. Peter Maurer

    Peter Maurer Carmeliter-Renette

    Dabei seit:
    16.03.04
    Beiträge:
    3.274
    Das glaub' ich unbesehen, Xjs. Ich hatte mir nur ueberlegt, wie man das machen wuerde, wenn man innerhalb AppleScript bleiben wollte. Und ja, auch mit der Property muesste man noch ueberpruefen, ob's die Datei schon gibt. Man haette dann aber ewig ansteigende Zahlen. Ist doch auch schoen. :D

    Waer's ein Cocoa-Programm, koennte ich noch besser helfen. Da hab' ich mir fuer solche Zwecke naemlich schon vor Urzeiten eine NSString-Kategorie-Methode namens [aPath availablePath] gebastelt.
     
  6. Xjs

    Xjs Prinzenapfel

    Dabei seit:
    04.10.07
    Beiträge:
    547
    Waer's Cocoa, wuerde ich substr() benutzen.

    Und er benutzt weiter unten sowieso "do shell script", da hab ich gedacht, eins mehr schadet auch nicht.
     
  7. Peter Maurer

    Peter Maurer Carmeliter-Renette

    Dabei seit:
    16.03.04
    Beiträge:
    3.274
    ?

    Die Funktion kenn' ich aus diversen Sprachen, aber eine Objective-C-Methode oder in den Cocoa-Frameworks definierte Funktion ist das nicht. :D

    Kann mir aber denken, was Du meinst. Man muss halt rausbekommen, was vor der Dateiendung steht -- d.h., vor dem letzten Punkt, der auch tatsaechlich Dateiendungs-Abtrenn-Funktion hat, so ueberhaupt vorhanden.

    (Da kann man naemlich reinfallen: Wenn ich eine Datei namens "Dr. Sommers Ratschlaege" habe, dann ist " Sommers Ratschlaege" keine Dateiendung. :D)

    Aber, aehm, das ist jetzt schon ein klitzekleines bisschen off topic.

    Stimmt auffallend. So weit hatte ich nicht gelesen, wie ich zu meiner Schande gestehen muss.
     
  8. Xjs

    Xjs Prinzenapfel

    Dabei seit:
    04.10.07
    Beiträge:
    547
    Achso. Die hatte ich mal selber in C implementiert, weil ich sie aus PHP vermisst hatte. Und Obj-C kann auch C ;)
     
  9. Peter Maurer

    Peter Maurer Carmeliter-Renette

    Dabei seit:
    16.03.04
    Beiträge:
    3.274
    Ah so, ja. Danke! :D
     
    space gefällt das.
  10. Xjs

    Xjs Prinzenapfel

    Dabei seit:
    04.10.07
    Beiträge:
    547
    Haja, wieder was gelernt. ;)
     
    space gefällt das.
  11. space

    space Neuer Berner Rosenapfel

    Dabei seit:
    02.12.05
    Beiträge:
    1.950
    Vielen Dank für die Rückmeldungen.

    Erstmal: Die führende Null war nur aus ästhetischen Gründen … ist nicht notwendig.

    Mit Property habe ich es versucht, bin aber zu keinem glücklichen Resultat gekommen.
    Zu einer Schleife reicht bei diesem Problem mein logischer Verstand nicht aus.
    Falls mir einer da Nachhilfeunterricht geben möchte, wäre ich ein williger Schüler.

    Auf jeden Fall ist das Problem mit dem Shell Script von Xjs gelöst, und dafür möchte ich großen Dank aussprechen.

    Edit:
    Mittlerweile ist mir dann doch die nötige Schleife eingefallen:

    Code:
    tell application "Finder"
    	
    	set pd to path to "desk" as text
    	
    	set x to 1
    	repeat until (exists file (pd & "Shot " & x)) is false
    		if (exists file (pd & "Shot " & x)) then
    			set x to x + 1
    		end if
    	end repeat
    	
    	set destFile to pd & "Shot " & x & ".jpg"
    	set ssFile to quoted form of POSIX path of destFile
    	
    	do shell script "screencapture -t jpg -io " & ssFile
    	
    end tell

    Ein glücklicher, endlich Fenster-Schnappschüsse ohne Rahmen und Schatten habender, einen neuen Shortcut cmd-shift-5 mit Butler ausführender

    Space
     
    #11 space, 21.12.07
    Zuletzt bearbeitet: 07.05.08
  12. Xjs

    Xjs Prinzenapfel

    Dabei seit:
    04.10.07
    Beiträge:
    547
    bitte, bitte :).
     

Diese Seite empfehlen