Folder Script Actions

M

mailtopp

Aktives Mitglied
Thread Starter
Dabei seit
17.09.2003
Beiträge
783
Reaktionspunkte
15
Hi,

ich hab ein Folder Script Action das folgendes beinhaltet:

on adding folder items to this_folder after receiving added_items
--Code
end adding folder items to

Das funktioniert aber nur sporadisch... so ca. jedes zweite Mal.
manchmal sofort,.. manchmal verspätet und manchmal gar nicht!

woran könnte das liegen?
 
Hallo,

an Fehlern in Deinem Code ;-)
Hast Du z.B. mal ein Dialog ganz am Anfang eingefügt um den Aufruf zu kontrollieren?
Wenn Du uns den Code bereitstellst, dann könnte der Lösungsansatz vielleicht besser werden.

Viele Grüße
 
Code:
on adding folder items to this_folder after receiving added_items
	set folderPath to ""
	tell application "Finder"
		repeat with this_thing in added_items
			set oldFileName to name of this_thing as text
			set newFileName to "" as text
			
			repeat with i from 1 to (count of oldFileName)
				if item i of oldFileName = " " then
					set newFileName to newFileName & "_"
				else
					set newFileName to newFileName & item i of oldFileName
				end if
			end repeat
			
			set name of this_thing to newFileName
			set folderPath to folderPath & "http://mydomain.org/Public/" & name of this_thing & return
			
		end repeat
		beep
	end tell
	
	set the clipboard to folderPath
	
end adding folder items to
 
Zuletzt bearbeitet:
Hallo,

"item" innerhalb einer Finder-Anweisung zu verwenden um Buchstaben zu ersetzen ist nicht sehr gut.

Ich schlage vor:

Code:
on adding folder items to this_folder after receiving added_items
	
	tell application "Finder"
		
		set folderPath to ""
		
		repeat with this_thing in added_items
			try
				set newFileName to my erseten(((name of this_thing) as string), " ", "_")
				set name of this_thing to newFileName
				set folderPath to folderPath & "http://mydomain.de/Public/" & newFileName & return
			on error
				-- vielleicht eine Meldung?
			end try
		end repeat
		
		beep
		
	end tell
	
	set the clipboard to folderPath
	
end adding folder items to

on erseten(txt, suchen, ersetzen)
	set AppleScript's text item delimiters to suchen
	set txt to every text item of txt
	set AppleScript's text item delimiters to ersetzen
	return ((every text item of txt) as string)
end erseten

Ich würde noch ein paar Kleinigkeiten ändern, aber ich denke das ist schon gut so für Dich.

Aber bitte überprüfe zunächst, ob das Skript überhaupt aufgerufen wird, z.B. mittels Dialog.

Viele Grüße
 
Zuletzt bearbeitet:
dankeschön, aber bei deinem script hab ich das gleiche problem... das dauert mindestens 1 bis 2 sekunden, bis das script anspringt!

also hintergrund ist: wenn ich einen screenshot mach, soll er sofort publizierbar sein! hab leo so einstellt, dass neue screens sofort in den public ordner abgelegt werden.

jetzt gibts dabei noch ein problem:

1. ich mach einen screenshot.. die datei "Bild 1.png" entsteht
2. das Skript benennt die Datei in "Bild_1.png" um und kopierst in die Zwischenablage
3. wenn ich einen neuen Screenshot mach, erstellt er wieder eine "Bild 1.png"
4. dann klappt natürlich das umbenennen nicht mehr

was wäre da eine ganz einfache methode, dass er das erkennt und das dann in Bild_2.png umbenennt und falls das existiert in Bild_3.png usw usw..
 
Hast Du nun ein Dialog eingebaut?

Verzögert startet es in der Regel immer. Das ist normal.
Aber das sporadische sollte jetzt behoben sein.

Viele Grüße
 
jetzt gibts dabei noch ein problem:
1. ich mach einen screenshot.. die datei "Bild 1.png" entsteht
2. das Skript benennt die Datei in "Bild_1.png" um und kopierst in die Zwischenablage
3. wenn ich einen neuen Screenshot mach, erstellt er wieder eine "Bild 1.png"
4. dann klappt natürlich das umbenennen nicht mehr
Hab jetzt keinen Mac um's auszuprobieren, aber mein theoretischer Vorschlag wäre folgender: vergiss komplett den Originalnamen des Screenshots samt seiner Indexnummer und kontrolliere stattdessen vor dem umbenennen wieviele Bilder der Ordner enthält und errechne die neue Nummer selbst, z.B.:
PHP:
set c to count of (every item of this_folder) -- z.B. 15 (14 mit dem korrekten Namen + der neue File mit dem Originalnamen)
-- der neue Name für das zugekommene Bild lautet dann:
set newName to ("Bild_" & c & ".png") --> Resultat: "Bild_15.png"

Good scripting
Farid
 
gute idee.. das problem ist, dass da ja noch mehr ist außer screenshots!
 
gute idee.. das problem ist, dass da ja noch mehr ist außer screenshots!
Schlecht :p ;) !
Ist aber trotzdem lösbar: mußt einen Loop schreiben, der alle Items zählt, die "Bild_" im Namen haben, die neue Indexnummer ist dann c+1.

Ciao
Farid
 
krieg ich nicht hin ;(
bin ein anfänger...
kannst du mir die zeile posten, wie man mit einer schleife datei für datei abarbeiten kann?
 
So sollte es gehen (man braucht noch nicht mal einen Loop...)
PHP:
on adding folder items to this_folder after receiving added_items
tell application "Finder"
repeat with this_thing in added_items
set newIndex to (count of (every item of this_folder whose name contains "Bild_"))+1
set name of this_thing to ("Bild_" & newIndex & ".png")
end repeat
end tell
end adding folder items to
(Da Dein Screenshot sowieso immer nur ein einziger File sein kann, brauchst Du eigentlich auch den repeat-Loop "with this_thing..." gar nicht.)

Good scripting
Farid
 
das soll ja nicht nur für screenshots sein, sondern auch wenn ich beliebig andere dateien in den public ordner werfe
 
so bin jetzt fertig.. jetzt funktionierts ziemlich gut so, wie ich das wollte.. hier für alle die, die sowas auch verwenden wollen:

Code:
on adding folder items to this_folder after receiving added_items
	
	tell application "Finder"
		
		set folderPath to ""
		
		repeat with this_thing in added_items
			
			if name of this_thing contains "screen" then
				set newIndex to (count of (every item of this_folder whose name contains "screen"))
				set FileName to "screen_" & newIndex & ".png" as text
			else
				
				set FileName to (name of this_thing) as text
				set FileName to my ersetzen(FileName, " ", "_")
			end if
			
			set name of this_thing to FileName
			set folderPath to folderPath & "http://mydomain.de/Public/" & FileName & return
		end repeat
		
		beep
		
	end tell
	
	set the clipboard to folderPath
	
end adding folder items to

on ersetzen(txt, suchen, ersetzen)
	set AppleScript's text item delimiters to suchen
	set txt to every text item of txt
	set AppleScript's text item delimiters to ersetzen
	return ((every text item of txt) as string)
end ersetzen
 
Zurück
Oben Unten