• 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

Laufende Nummern

space

Neuer Berner Rosenapfel
Registriert
02.12.05
Beiträge
1.949
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
 

Xjs

Prinzenapfel
Registriert
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.
 

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
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.
 

Xjs

Prinzenapfel
Registriert
04.10.07
Beiträge
547
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.

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.
 

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
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.
 

Xjs

Prinzenapfel
Registriert
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.
 

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
Waer's Cocoa, wuerde ich substr() benutzen.
?

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.

Und er benutzt weiter unten sowieso "do shell script", da hab ich gedacht, eins mehr schadet auch nicht.
Stimmt auffallend. So weit hatte ich nicht gelesen, wie ich zu meiner Schande gestehen muss.
 

Xjs

Prinzenapfel
Registriert
04.10.07
Beiträge
547
?

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

Achso. Die hatte ich mal selber in C implementiert, weil ich sie aus PHP vermisst hatte. Und Obj-C kann auch C ;)
 

space

Neuer Berner Rosenapfel
Registriert
02.12.05
Beiträge
1.949
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
 
Zuletzt bearbeitet: