Ordnername basierend auf variable Datei

A

apstalker

Mitglied
Thread Starter
Dabei seit
02.09.2009
Beiträge
64
Reaktionspunkte
0
Hallo erstma,

vorab muss ich sagen, ich bin noch AS-Frischling.

Es geht um folgenden Zweck:

Ein Ordner (pdf_eingang) wird vom Automator auf Inhalt abgefragt.
Dort werden immer wieder PDFs mit unterschiedlichen Namen abgelegt.

Anschließend wird durch den Automator ein Apple Script ausgeführt:

Es soll, je nach Name des neuen PDFs, ein neuer Ordner mit gleichem Namen (nur ohne den letzten Platzhalter und Sufix) erstellt werden.
Anschließend sollen die jeweiligen Dateien in die jeweiligen für die Dateien erstellte Ordner verschoben werden.

Im Moment liegen 2 Probleme vor mir:

1. Ich finde den Fehler im unten genannten Script nicht, bekomme die Fehlermeldung

- Die Datei "bla_0000000_bla_0000000.pdf" wurde nicht gefunden. -

Ich denke es liegt an den Definitionen der Variablen. Die sind sowieso absolutes Frischfleisch für mich.


2. Ich weiss nicht, wie ich den neu erstellten Ordner (der ja ebenfalls als Variable intepretiert werden muss) in diese Form bringe:
"bla_0000000_bla"

Hier das Script:


Code:
on run {input, parameters}
	
	
	set listofnames to {}
	
	tell application "Finder"
		
		set filelist to every file of folder "pdf_eingang" of folder "pfadangabe" of folder "pfadangabe" of folder "pfadangabe" of folder "pfadangabe" of startup disk
		repeat with currentFile in filelist
			
			set currentfilename to (the name of currentFile)
			set foldername to currentfilename as alias
			set currentfolder to foldername as folder
			
			
			tell application "Finder"
				
				if exists folder currentfolder then
					display dialog "ALTER den ordner GIBT ES SCHON checks halt" buttons {"ok"}
				else
					make folder at folder "pfadangabe" of folder "pfadangabe" of folder "pfadangabe" of folder "pfadangabe" of startup disk with properties {name:currentfilename}
				end if
				
				
			end tell
			
			
			
			
			tell application "Finder"
				
				move every file of folder "pdf_eingang" of folder "pfadangabe" of folder "pfadangabe" of folder "pfadangabe" of folder "pfadangabe" of startup disk to currentfolder
				
				
				
			end tell
		end repeat
		
	end tell
	
	
	return input
end run
 
Liegen denn ausschließlich PDFs im Folder? Ich verstehe noch nicht, warum Du automator dazu bemühst. Das script habe ich mir jetzt noch nicht angesehen. Schaue aber mal drüber.
 
Hallo Winter,

danke für die schnelle Antwort.

Mir erscheint der Einbezug des Automators übersichtlicher.
Das ganze ist eine etwas größere Geschichte, zum Verständnis:

Es werden PDFs geschrieben, die nicht größer werden dürfen als 5 MB (für eine Bilddatenbank).
Als grundsätzliche und auch nicht umstößliche Maßnahme werden aus den frisch geschriebenen PDFs erst einmal JPGs geschrieben:

PDFs kommen in einen Ordner "new_pdf".

Durch ein Applescript als Ordneraktion für "new_pdf" wird ein Workflow im Automator gestartet.

Dort wird zuerst "new_pdf" auf Inhalt abgefragt und die gefundenen PDFs durch ein Shell-Script gejagt, wo sie als JPGs im Ordner "jpg_OUT" ausgegeben werden (PDFs in "new_pdf" werden gelöscht".

Anschließend im Workflow folgt ein Applescript, welches die JPGs auf Größe in MB überprüft (if-Funktion "> 5mb", else usw...).
Sie werden entweder in Ordner "unter5mb" oder "ueber5mb" verschoben.

Beide Ordner werden auf Inhalt abgefragt und die gefundenen Dateien werden durch eins von 2 Photoshop Droplets geschossen, welches die JPGs entweder (bei unter 5 MB) gleich als PDF abspeichert oder (bei über 5 MB) erst reduziert und dann als PDF abgespeichert wird (in einem Sammelordner "pdf_in".

Und jetzt tritt das oben gepostete Apple Script in Kraft...
 
Ok, ich verstehe.
Dennoch erscheint es mir fast sinnvoll, den Ordner vom Rest zu trennen. Und eine Ordneraktion an den Ordner anzuhängen.
Ich schau mal, ob ich tagsüber etwas Zeit finde.
 
OK super, vielen Dank schonmal! Ich versuche derweilen ob ich mit der Abkopplung des Ordners besser zurecht komme.
 
HM jetzt habe ich das Problem dass sich sämtliche Ordneraktionen nicht mehr durchführen lassen...

Habe das Script in "Folder Action Scripts" und libary/"Action Scripts" liegen, es reagiert jedoch nicht.

Habe auch andere Action Scripts, die ich vorher schon verfasst und an verschiedene Ordner gehängt habe, wieder aktiviert und ausprobiert... Diese reagieren ebenfalls nicht mehr...

Action Script für den "pdf_in":
Code:
on adding folder items to this_folder after receiving added_items
	set listofnames to {}
	
	tell application "Finder"
		
		set filelist to every file of folder "pdf_in" of folder "pfadangabe" of folder "pfadangabe" of folder "pfadangabe" of folder "pfadangabe" of startup disk
		repeat with currentFile in filelist
			
			set currentfilename to (the name of currentFile)
			set foldername to currentfilename as alias
			set currentfolder to foldername as folder
			
			try
				
				
				tell application "Finder"
					
					if exists folder currentfolder then
						display dialog "ALTER den ordner GIBT ES SCHON checks halt" buttons {"ok"}
					else
						make folder at folder "pfadangabe" of folder "pfadangabe" of folder "pfadangabe" of folder "pfadangabe" of startup disk with properties {name:currentfilename}
					end if
					
					
				end tell
				
			end try
			
			
			
			
			tell application "Finder"
				
				move every file of folder "pdf_in" of folder "pfadangabe" of folder "pfadangabe" of folder "pfadangabe" of folder "pfadangabe" of startup disk to currentfolder
				
				
				
			end tell
		end repeat
		
	end tell
	
	
end adding folder items to
 
Sag mal verstehe ich das richtig? Wenn ich den Namen eines PDFs auslese und den Dateinamen verwende, um einen passenden Ordner zu erstellen, dann gibt es für jedes PDF genau einen Ordner mit nur einem File darin. Das alte würde ja überschrieben werden.

Hier erst mal meine Überlegung:
Code:
on adding folder items to thisFolder after receiving addedItems
	
	
	tell application "Finder"
		repeat with i from 1 to number of items in addedItems
			set current_file to item i of addedItems
			set AppleScript's text item delimiters to {"."}
			set file_name to name of current_file
			set foldername to first text item of file_name
			if not (exists folder foldername of thisFolder) then
				make new folder at thisFolder with properties {name:foldername}
			end if
			set the target_folder to folder foldername of thisFolder
			move current_file to target_folder
		end repeat
		
	end tell
end adding folder items to
 
Absolut richtig.

Dein Script sieht vielversprechend aus :) und vorallem nicht über 5750390 Umwege wie mein altes..Danke dass du dir die Zeit genommen hast.

Aber, wie schon oben erwähnt, laufen meine Action Scripts nicht mehr an.
Ich habe bereits versucht ob dein Script funktioniert indem ich im Editor den on adding befehl rausgeschmissen und play gedrückt habe, doch dann erkennt es (für mich leider erst im Nachhinein logischerweise) die addeditems Variable nicht...

Weißt du, woran es liegen könnte, dass auf einmal all meine Action Scripts bzw. Ordneraktionen nicht mehr laufen?
 
SnowLeopard? Hatte ich eben auch. :)
Schau mal, wenn Du einen rechtsklick auf einen Ordner machst und Ordneraktion konfigureren anwählst, ob der Haken ganz oben drin ist.
Ich musste nen Neustart machen. Keine Ahnung, was das ist. Irgendwo überholt er sich oder hängt in einer Schleife.
 
OH MEIN GOTT der Haken war draussen x(
Entschuldige bitte meine Unachtsamkeit...

Dein Script funktioniert!! Ich danke dir vielmals! Über dieses Problem sitze ich jetzt schon 2 Tage á 8 Stunden :)

2 Fragen hätte ich noch:

1. Der Name des neu erstellten Ordners wird ja momentan mit diesem "Limiter"-Befehl auf die letzte Stelle vor dem Punkt gekürzt.
Bekommt man das auch irgendwie hin, dass der Name bis zum letzten Underline _ gekürzt wird?

Sprich:
File: kund_2020202_motiv_20090101.pdf
Ordner: kund_2020202_motiv?

2. Ich habe vergessen zu erwähnen dass das JPG, von dem aus das PDF in Photoshop geschrieben wurde, mit in den für das PDF erstellten neuen Ordner muss (für Thumbnails).
 
Zuletzt bearbeitet:
1. Ja, kein Problem. Einfach im Code tauschen:
Code:
set AppleScript's text item delimiters to {"_"}
Dann muss man noch sagen, dass sich der Name nicht nur aus dem ersten Teil zusammensetzt, sondern auch noch weiter geht.

2. Da das jpg eine andere Endung hat, schiebt er es einfach mit in den Ordner, sofern es ansonsten den gleichen Namen trägt.
 
Tut mir leid aber wie mache ich das mit dem Namen?

Ich müsste ja irgendwie eine "von-bis"-Definition da mit reinbauen, sowas wie

set foldername to text items (first;third) of file_name

ODER ich schaffe es irgendwie einzig und allein den 3. Underline als Delimiter zu definieren und dann first text item zu wählen.

Leider weiß auf beiden Wegen nicht, wie die Praxis aussieht....
 
Einfach geht es so:

Code:
set foldernamefirst to (first text item of file_name as string)
			set foldernamesecond to (second text item of file_name as string)
			set foldernamethird to (third text item of file_name as string)
			set foldername to foldernamefirst & "_" & foldernamesecond & "_" & foldernamethird

Man könnte das Pferd auch von hinten aufzäumen. Aber so funktioniert es.
 
  • Gefällt mir
Reaktionen: Gerhold und apstalker
Hey es funktioniert!! *STRIKE*

Vielen Dank für deine Zeit und Geduld!!
 
Zurück
Oben Unten