Apple script voor Hazel

Goede middag,

kan iemand mij misschien op weg helpen met het volgende:

ik probeer zo veel mogelijk mijn bestanden consequent te benamen (jaartal - dossiernummer - naam klant - soort document) en dat gaat vlot dankzij oa textExpander en Hazel

probleem waar ik echter verschillende keren per dag tegenaan loop is dat ik wanneer ik zo’n file naar bv klant wil mailen, de naam van de file manueel moet aanpassen (kwestie van klant niet het gevoel te geven een dossiernummer te zijn)

concreet voorbeeld: naam van de originele file is “2018 015 - Janssens Jan - factuur” en ik wil de naam van file veranderen in “Janssens Jan”

ik weet dat het mbv Hazel niet zo moeilijk is om tekens “toe te voegen” aan de bestandsnaam… maar ik heb het omgekeerde nodig… bedoeling is dus dat Hazel “Janssens Jan” uit de originele bestandsnaam filtert en als nieuwe bestandsnaam geeft… dat moet blijkbaar lukken via een Applescript… maar ik heb echt geen idee hoe ik aan zo’n script moet beginnen…

Alvast bedankt voor de suggesties,

Peter

Klinkt als een cut-probleem:


echo "2018 015 - Janssens Jan - factuur" | cut -d'-' -f2

 

https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/cut.1.html

Je kunt in Hazel ook Shell Scripts runnen. Ik heb zoiets om podcasts die ik heb gedownload te hernoemen.

 

Je zou een speciale map moeten hebben, waar je de bestanden die je wilt hernoemen in kopieert.

 

Dat script van TheBigZ zou je dan dan in Hazel op de volgende manier kunnen gebruiken:

Helaas, wat ik probeerde werkt niet. Moet nu naar bed, kom er morgenavond op terug. Ik zal kijken of ik iets kan maken.

 

 

BTW hoe definieer je een blok met code op dit forum?

Zoals vanouds: met [code]-tags

 

Bedankt, maar is nog niet echt wat ik zoek (krijg het momenteel trouwens nog niet aan de praat)…

ik denk eigenlijk meer in de richting van het gebruik van “attributes”… bepaalde (verschillende dus) stukken van de file naam selecteren en tijdelijk toewijzen aan een variabele en die variabelen dan vervolgens gebruiken om nieuwe filenaam en tags te maken…

Heb op de site van Noodlesoft gevonden dat die manier kan, maar ik snap het echt niet hoe ik het voor mekaar moet krijgen…

https://www.noodlesoft.com/manual/hazel/attributes-actions/using-applescript-or-javascript/

 

Ben je per se op zoek naar een Hazel oplossing, of zou je ook geholpen zijn met een Folder Action? In dat geval kun je zo’n bestand met lange naam naar een (speciaal daarvoor gemaakt) mapje slepen, en dan komt er automatisch een kopie van dat bestand met de korte naam in die map te staan, die je dan vervolgens kunt mailen etc. (Als je daarmee geholpen bent, kan ik je wel verder helpen.)

Of een AppleScript programma, waarop je het bestand waarvan je de naam wil wijzigen dropt.

 

Dit werkt als je er één bestand op dropt (het zou met meerdere tegelijk moeten werken, maar om de een of andere reden helaas niet), het bestand met de nieuwe naam wordt naar de Desktop gekopieerd.

Kopieer de onderstaande code in de (Apple) Scripteditor en bewaar het als structuur programma (dus niet script).


on open draggedItems

repeat with thisFile in draggedItems

set HuidigBestand to thisFile as string

tell application "Finder" to set naamBestand to name of thisFile

set TekstScheidingsTeken to AppleScript's text item delimiters

set AppleScript's text item delimiters to "."

set DeExtentie to "." & (the last text item of HuidigBestand)

set HuidigBestand to POSIX path of HuidigBestand

set AppleScript's text item delimiters to TekstScheidingsTeken

set naamBestand to rightString(naamBestand, " – ")

set naamBestand to leftString(naamBestand, " – ")

set naamBestand to naamBestand & DeExtentie

set the bestemmingsFolder to POSIX path of (path to desktop folder) as text

do shell script "cp " & quoted form of HuidigBestand & " " & quoted form of (bestemmingsFolder & naamBestand)

end repeat

end open

--d--   Return the text to the right of a delimiter (full string if not found).

on rightString(str, del)

local str, del, oldTIDs

set oldTIDs to AppleScript's text item delimiters

try

set str to str as string

if str does not contain del then return str

set AppleScript's text item delimiters to del

set str to str's text items 2 thru -1 as string

set AppleScript's text item delimiters to oldTIDs

return str

on error eMsg number eNum

set AppleScript's text item delimiters to oldTIDs

error "Can't rightString: " & eMsg number eNum

end try

end rightString

--d--   Return the text to the left of a delimiter (full string if not found).

on leftString(str, del)

local str, del, oldTIDs

set oldTIDs to AppleScript's text item delimiters

try

set str to str as string

if str does not contain del then return str

set AppleScript's text item delimiters to del

set str to str's first text item

set AppleScript's text item delimiters to oldTIDs

return str

on error eMsg number eNum

set AppleScript's text item delimiters to oldTIDs

error "Can't leftString: " & eMsg number eNum

end try

end leftString

 

Bovenstaande code is met een aantal aanpassingen denk ik ook wel te gebruiken met Hazel.

dank u wel, ga ik straks mee aan de slag…