-- Blocco 1: L'applicazione principale
-- Viene esaminata ciclicamente il contenuto della cartella scelta dall'utente.
-- Se l'elemento trovato è un file scatta il handler del Blocco 2,
-- se è una cartella scatta il handler del Blocco 3
set miaCartella to choose folder with prompt "Scegli la cartella da elaborare:"
tell application "Finder"
set gliElementi to every item of miaCartella
-- il blocco "try" fa sì che in caso di eventuali errori lo script termina
-- senza dare messaggi preoccupanti
try
repeat with unElemento in gliElementi
if class of unElemento is not folder then
-- il handler viene preceduto da *my* che indica che stiamo chiamando una
-- procedura dello script e non del Finder il quale non saprebbe che cosa
-- fare con questo comando
my elaboraFiles(unElemento)
else
my elaboraCartella(unElemento)
end if
end repeat
end try
end tell
-- Blocco 2: Handler chiamato se l'elemento in questione è un file;
-- Cambia la proprietà "locked" da true (il file è protetto) a false
on elaboraFiles(ilFile)
tell application "Finder"
if locked of ilFile = true then
set locked of ilFile to false
end if
end tell
end elaboraFiles
-- Blocco 3: Handler chiamato se l'elemento in questione è una cartella;
-- Esamina a sua volta il contenuto della sottocartella e chiama il handler 2
-- se trova un file, richiama invece SE STESSO se trova un'altra sottocartella;
-- e così via...
on elaboraCartella(laCartella)
tell application "Finder"
set gliElementi to every item of laCartella
repeat with sottoElemento in gliElementi
if class of sottoElemento is not folder then
my elaboraFiles(sottoElemento)
else
my elaboraCartella(sottoElemento)
end if
end repeat
end tell
end elaboraCartella