flusso Automator per elencare contenuto cartella

Mac OS X e le sue Applicazioni

Moderatore: ModiMaccanici

Avatar utente
kato
Stato: Non connesso
Expert
Expert
Avatar utente
Iscritto il: ven, 12 nov 2010 15:16
Messaggi: 4856
Località: Roma

Top

[Solo ora mi accorgo che non esiste una sezione del forum dedicata ad automazione, AppleScript, Automator, ... :shock: ]

La recensione di oggi su PrintWindow mi ha fatto venire in mente, oltre al già citato ls > elenco.txt, che mi ero fatto un flusso in Automator piuttosto semplice ma efficace.

Va salvato come Plugin del Finder in Tiger, come Servizio in Snow Leopard mentre in Leopard non ricordo.

Compare nel menù contestuale e da lì può essere chiamato. Nota: non considera le sottocartelle ma elenca solamente il contenuto della cartella su cui lo si punta. Produce un file di testo, che va a mettere sulla scrivania, avente come nome il percorso della cartella e la data con l'ora (in effetti metà dello script serve a crearne il nome...) e come contenuto la lista degli elementi della cartella.

Ha un solo comando che è Esegui AppleScript dove lo script è il seguente.

Codice: Seleziona tutto

-- funzione sostituzione ":" con "_" per nome file corretto
on replaceText(find, replace, subject)
	set prevTIDs to text item delimiters of AppleScript
	set text item delimiters of AppleScript to find
	set subject to text items of subject
	
	set text item delimiters of AppleScript to replace
	set subject to "" & subject
	set text item delimiters of AppleScript to prevTIDs
	
	return subject
end replaceText

on run {input, parameters}
	tell application "Finder"
		set elenco to "" as string
		set cartella to input as string
		set quanti to number of items of folder cartella as string
		set contenuto to items of folder cartella
		repeat with n from 1 to quanti
			-- se elemento è una cartella, lo racchiude tra []	
			if class of item n of contenuto is folder then
				set nome to "[" & (name of item n of contenuto as string) & "]"
			else
				set nome to (name of item n of contenuto as string)
			end if
			set elenco to elenco & nome & return
		end repeat
	end tell
	
	-- definisce data e ora per nome file
	set tempo to (current date)
	set anno to year of tempo as string
	set mese to month of tempo as number
	if mese < 10 then
		set mese to "0" & mese as string
	end if
	set giorno to day of tempo as number
	if giorno < 10 then
		set giorno to "0" & giorno as string
	end if
	set ora to hours of tempo as number
	if ora < 10 then
		set ora to "0" & ora as string
	end if
	set minuti to minutes of tempo as number
	if minuti < 10 then
		set minuti to "0" & minuti as string
	end if
	set secondi to seconds of tempo as number
	if secondi < 10 then
		set secondi to "0" & secondi as string
	end if
	set dataFile to (anno & mese & giorno & "_" & ora & minuti & secondi)
	-- crea nome file con percorso, data e ora
	set nomeFile to get replaceText(":", "_", cartella) & dataFile
	
	tell application "Finder"
		-- crea file su desktop con nome creato sopra
		set lista to make new file of desktop with properties {name:(nomeFile)}
		set lista to lista as alias
		open for access lista with write permission
		write elenco to lista
		close access lista
	end tell
	
	
end run

Avatar utente
iStefano
Stato: Non connesso
Genio guastatore
Genio guastatore
Avatar utente
Iscritto il: mer, 30 dic 2009 10:30
Messaggi: 8279
Località: Pomigliano D'Arco (NA)

Top

Contatta:
Ottimo ... complimenti ....

Scrivo su iMaccanici con TapaTalk per MacBook Air

Avatar utente
mondisky
Stato: Non connesso
Stella nascente
Stella nascente
Avatar utente
Iscritto il: ven, 15 gen 2010 15:55
Messaggi: 780
Località: formiano d'adozione, casertano d'origine

Top

puoi spiegare ad un nonExpert come si imposta? non ho la più pallida idea di come funzioni automator :oops:
Gianni

Avatar utente
kato
Stato: Non connesso
Expert
Expert
Avatar utente
Iscritto il: ven, 12 nov 2010 15:16
Messaggi: 4856
Località: Roma

Top

mondisky ha scritto:puoi spiegare ad un nonExpert come si imposta? non ho la più pallida idea di come funzioni automator :oops:
Per Snow Leopard, ora vado a memoria e devi aspettare stasera per la conferma quindi:
1. papocchia a tuo rischio e pericolo:
2. apri Automator
3. scegli Servizio
4. trascina a destra l'azione Esegui AppleScript
5. sostituisci il codice con quello mio sopra
6. salva e dai un nome sensato

Ora dovresti trovarti il flusso pronto all'uso nel menù contestuale. Quando ti compare il Kernel Panic, ricordati del punto 1. :D

Avatar utente
mondisky
Stato: Non connesso
Stella nascente
Stella nascente
Avatar utente
Iscritto il: ven, 15 gen 2010 15:55
Messaggi: 780
Località: formiano d'adozione, casertano d'origine

Top

fatto, ma nel menù contestuale, relativo ad una cartella qualsiasi del finder, non compare.... forse avrei dovuto aspettare la conferma di stasera? :lol:
Gianni

Avatar utente
kato
Stato: Non connesso
Expert
Expert
Avatar utente
Iscritto il: ven, 12 nov 2010 15:16
Messaggi: 4856
Località: Roma

Top

C'è però un sottomenù Servizi, vero?

Avatar utente
mondisky
Stato: Non connesso
Stella nascente
Stella nascente
Avatar utente
Iscritto il: ven, 15 gen 2010 15:55
Messaggi: 780
Località: formiano d'adozione, casertano d'origine

Top

dove? nel menù contestuale? no

ma tu per menù contestuale intendi quello che si apre con clik destro, vero?
Gianni

Avatar utente
kato
Stato: Non connesso
Expert
Expert
Avatar utente
Iscritto il: ven, 12 nov 2010 15:16
Messaggi: 4856
Località: Roma

Top

mondisky ha scritto:dove? nel menù contestuale? no
Mmmhh...
mondisky ha scritto:ma tu per menù contestuale intendi quello che si apre con clik destro, vero?
Sì.

Aspetta qualche ora... :?

Avatar utente
mondisky
Stato: Non connesso
Stella nascente
Stella nascente
Avatar utente
Iscritto il: ven, 15 gen 2010 15:55
Messaggi: 780
Località: formiano d'adozione, casertano d'origine

Top

e chi si muove. comunque, per ora, nessun kernel panic :D
Gianni

Avatar utente
kato
Stato: Non connesso
Expert
Expert
Avatar utente
Iscritto il: ven, 12 nov 2010 15:16
Messaggi: 4856
Località: Roma

Top

In effetti la memoria potrebbe aver saltato il passo 5b (o 4b):
- alla voce "Ricezioni del servizio selezionate" (complimenti al traduttore) scegli "Documenti e cartelle" e poi in "Finder"

Se hai già creato e chiuso il servizio che ovviamente non ti funziona, puoi riaprirlo o da Automator dai più recenti oppure lo trovi ~/Library/Services/.

Fammesape'.

Avatar utente
mondisky
Stato: Non connesso
Stella nascente
Stella nascente
Avatar utente
Iscritto il: ven, 15 gen 2010 15:55
Messaggi: 780
Località: formiano d'adozione, casertano d'origine

Top

fatto quanto mi hai indicato e......... funziona alla grande ed è utilissimo.
grazie e complimenti :)
Gianni

Franco_AF
Stato: Non connesso
Nuovo Maccanico
Nuovo Maccanico
Iscritto il: lun, 03 dic 2012 16:37
Messaggi: 2

Top

Fantastico!

Avrei necessità di utilizzare questo script all'interno di cartelle contenenti SOLO immagini, e mi servirebbero 2 modifiche:

1) fare in modo che il nome file sia sempre lo stesso --> ci sono riuscito

2) fare in modo che mi salvi il file di testo all'interno della cartella che ho esaminato --> non ci sono riuscito


Io sono un niubbo totale ma qualcosa di programmazione capisco (più per senso che per conoscenza tecnica)..

E' fattibile?

Grazie a tutti!

edit: ci sono riuscito, alla faccia degli smanettoni:

Codice: Seleziona tutto

-- funzione sostituzione ":" con "_" per nome file corretto
on replaceText(find, replace, subject)
	set prevTIDs to text item delimiters of AppleScript
	set text item delimiters of AppleScript to find
	set subject to text items of subject
	
	set text item delimiters of AppleScript to replace
	set subject to "" & subject
	set text item delimiters of AppleScript to prevTIDs
	
	return subject
end replaceText

on run {input, parameters}
	tell application "Finder"
		set elenco to "" as string
		set cartella to input as string
		set quanti to number of items of folder cartella as string
		set contenuto to items of folder cartella
		repeat with n from 1 to quanti
			-- se elemento è una cartella, lo racchiude tra []   
			if class of item n of contenuto is folder then
				set nome to "[" & (name of item n of contenuto as string) & "]"
			else
				set nome to (name of item n of contenuto as string)
			end if
			set elenco to elenco & nome & return
		end repeat
	end tell
	
	
	tell application "Finder"
		-- crea file su desktop con nome creato sopra
		set lista to make new file of cartella with properties {name:("_lista.txt")}
		set lista to lista as alias
		open for access lista with write permission
		write elenco to lista
		close access lista
	end tell
	
	
end run

Avatar utente
mauropasha
Stato: Non connesso
Expert Latitante
Expert Latitante
Avatar utente
Iscritto il: sab, 07 giu 2008 15:51
Messaggi: 13910
Località: Bari

Top

Contatta:
Bene, complimenti e benvenuto tra noi :wink:
mauro
se non sai cosa stai per fare, non lo fare
senza dimenticare che sbagliando s'impara

dibi
Stato: Non connesso
Maccanico assiduo
Maccanico assiduo
Iscritto il: gio, 25 ott 2012 22:36
Messaggi: 148

Top

Ci sono riuscito, funziona!

Un sistema di automazione l'ho scoperto in questi giorni in Azioni cartella, cercando un'azione che mi permettesse di ridimensionare con un clic le foto di una cartella da copiare in Dropbox. Purtroppo fra le azioni ci sono i vari flip o rotate, ma non resize o scale.

Ho trovato in rete uno script che permette di ridurre una foto alla misura voluta, l'ho messo nella cartella degli script delle azioni cartella, l'ho selezionato, ma non succede nulla. Ci capisco poco o niente di queste cose e sono andato a naso: ho individuato in uno degli script funzionanti il comando che fa ruotare una foto (rotate this image to angle 270.0) e l'ho sostituito con quello dello script che non funziona (set the target_width to xxxx - xxxx è la larghezza della foto che si vuole ottenere) ma non funziona.

Peccato, perché azioni cartella è proprio comodo: copi nella cartella le foto da ridurre e te le trovi rimpicciolite!

Rispondi

Torna a “Software”

Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti