Newsgroup: it.comp.macintosh
Titolo: Zippare Win-friendly dal menu contestuale

Con Automator si può creare un plugin per il Finder che permette di
zippare un file o una cartella da menu contestuale, senza inserire
nell'archivio i file .DS_Store e le risorse HFS+, che non vengono ben
digeriti dagli utenti Windows.
Aperto un nuovo documento Automator, bisogna trascinare nell'area del
flusso di lavoro l'azione "Esegui AppleScript". Nella finestra dello
script va messo quanto segue:
on run {input, parameters}
tell application "Finder"
set oggetto to (first item of input as string)
set nome to quoted form of ((name of item oggetto) as string)
set nome_se to my nome_senza_estensione(oggetto)
set cartella to quoted form of POSIX path of ¬
((container of item oggetto) as string)
do shell script ¬
"cd " & cartella & "; zip -r " & nome_se & " " ¬
& nome & " -x \\*.DS_Store"
end tell
return input
 
end run
on nome_senza_estensione(an_item)
tell application "Finder"
set theName to (name of item an_item) as text
set theExtension to (name extension of item an_item) as text
if theExtension is not "" then
set x to the offset of theExtension in theName
set theName to text 1 thru (x - 2) of theName
end if
return theName
end tell
end nome_senza_estensione
Salvare poi il documento scegliendo "Registra come plug-in:" dal menu
"Archivio", selezionando "Finder" nel menu ""Plug-in in:". Il plugin
sarà disponibile nel menu contestuale del Finder, sotto la voce
"Automator".
-- 
Salutandovi indistintamente

 digeriti dagli utenti Windows.
Bellissimo stavo proprio cercando una cosa del genere.
-- 
Riccardo Saettone
Per rispondere togliere Alfa e Beta dall'indirizzo

 on run {input, parameters}
Così è meglio: gestisce anche più file/cartelle contemporaneamente e non
sovrascrive gli archivi già creati.
on run {input, parameters}
tell application "Finder"
set n to count of input
set oggetto to (first item of input as string)
set cartella to quoted form of POSIX path of ¬
((container of item oggetto) as string)
set nome to ""
repeat with i in input
set nome to (quoted form of ((name of i) as string) & " " & nome)
end repeat
if n = 1 then
set nome_se to my nome_senza_estensione(oggetto)
else
set nome_se to "Archivio"
end if
if item (((container of item oggetto) as string) & nome_se & ".zip") ¬
exists then
set theDate to current date
set theYear to year of theDate as text
set theMonth to (month of theDate as integer) as text
if length of theMonth < 2 then
set theMonth to ("0" & theMonth)
end if
set theDay to (day of theDate) as text
if length of theDay < 2 then
set theDay to ("0" & theDay)
end if
set theTime to (characters 1 thru 2 of time string of theDate) & ¬
(characters 4 thru 5 of time string of theDate) & ¬
(characters 7 thru 8 of time string of theDate)
set nome_se to ¬
(nome_se & "_" & theYear & theMonth & theDay & "-" & theTime)
end if
do shell script ¬
"cd " & cartella & "; zip -r " & quoted form of nome_se & " " ¬
& nome & "-x \\*.DS_Store"
end tell
return input
end run
on nome_senza_estensione(an_item)
tell application "Finder"
set theName to (name of item an_item) as text
set theExtension to (name extension of item an_item) as text
if theExtension is not "" then
set x to the offset of theExtension in theName
set theName to text 1 thru (x - 2) of theName
end if
return theName
end tell
end nome_senza_estensione
-- 
Salutandovi indistintamente

 sovrascrive gli archivi già creati.
[cut]
grazie mille, preziosissimo!
-- 
Tutte le macchine al potere, gli uomini a pane ed acqua

 grazie mille, preziosissimo!
Tu che sei un programmatore vero potresti fare un "contextual menu
item": sarebbe più efficiente...
-- 
Salutandovi indistintamente

 item": sarebbe più efficiente...
Ho trovato un esempio di menu contestuale nella documentazione dei
developer tools:
/Developer/Examples/Carbon/SampleCMPlugin/
Ora ci do un'occhiata...
-- 
Salutandovi indistintamente

 Ora ci do un'occhiata...
Niente, č roba in C e non ci capisco una mazza. Se ci fosse il modo di
infilarci dentro un AppleScript...
-- 
Salutandovi indistintamente

 infilarci dentro un AppleScript...
Sai che hai avuto davvero una grande idea? Pero' non prima di domani
sera! -_^
-- 
Sono greco, sono fenicio, sono romano, sono bizantino, sono svevo,
sono arabo, sono spagnolo, sono francese, sono italiano.

 sovrascrive gli archivi già creati.
ho provato a creare questo plug-in del finder con automator: se 
seleziono più file funziona perfettamente, mentre ne seleziono solo uno 
ottengo il seguente messaggio di errore: "script non capisce il 
messaggio nome_senza_estensione".
Io ne capisco ancora meno di script... sbaglio qualcosa io?
spike

 sbaglio qualcosa io?
Devi aver copiato male lo script. Devi mettere anche la parte che sta in
fondo al post.
-- 
Salutandovi indistintamente

 fondo al post.
infatti mancava proprio quella: avevo copiato solo tra "On Run ecc" e 
"return input", in modo da sostituire solo la scritta "your script goes 
here" nell'azione di automator, e non mi ero accorto che lo script 
continuava... :-)))
Ora funziona perfettamente.
Mi serviva proprio, grazie mille!
spike