Sökes: Program som kan "bevaka" kataloger

Tråden skapades och har fått 8 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Varberg
  • 2006-02-02 13:46

Halloj!

Jag är ute efter ett program som kan "bevaka" en katalog, och utföra fördefinierade saker när det hamnar filer däri. Jag vet inte om det här det här man ska ha Folder Actions till. Tyvärr verkar det bara vara AppleScript som gäller när man ska köra Folder Actions, och AppleScript har jag ingen koll på.

Jag försökte använda launchd och dess "Queue Directories", men då körs scriptet/programmet så fort jag börjar lägga en fil i katalogen. Jag vill vara säker på att hela filen är uppladdad/kopierad färdigt innan jag behandlar den/flyttar på den.

Hemskt tacksam för förslag/tips/idéer.

  • Medlem
  • Varberg
  • 2006-02-02 14:01

Ok, jag svarar på min egen fråga här, men med en följdfråga.

Det verkar ju helt klart som att Folder Actions är Bra Skit<tm> i mitt fall, kruxet nu är bara att jag inte kan AppleScript för fem öre. Det lättaste för mig vore att ropa på ett shellscript men kasta med lite argument, såsom filerna som lagts i katalogen. Någon som har ett sådant exempel som kan undervisa mig lite?

  • Medlem
  • Stockholm
  • 2006-02-02 15:25
Ursprungligen av johanf:

Ok, jag svarar på min egen fråga här, men med en följdfråga.

Det verkar ju helt klart som att Folder Actions är Bra Skit<tm> i mitt fall, kruxet nu är bara att jag inte kan AppleScript för fem öre. Det lättaste för mig vore att ropa på ett shellscript men kasta med lite argument, såsom filerna som lagts i katalogen. Någon som har ett sådant exempel som kan undervisa mig lite?

Tjae, typ nåt sånt här skulle kunna göra tricket:

on adding folder items to this_folder after receiving added_items
	try
		tell application "Finder"
			-- loopa skriptanrop för varje ny fil i mappen
			repeat with eachItem in the added_items
				set the my_arguments to eachItem
				set my_result to (do shell script "/path/till/skriptet " & my_arguments)
			end repeat
		end tell
		
	end try
end adding folder items to

Otestat, men kan ge en idé om hur man kan göra...

Du kan använda automator (om du kör tiger vill säga) för att göra enklare folder actions.

  • Medlem
  • Varberg
  • 2006-02-02 16:27
Ursprungligen av irrelogical:

Du kan använda automator (om du kör tiger vill säga) för att göra enklare folder actions.

Ja titta, det gick ju smidigt. Jag hittade ett bra exempel här: http://www.automator.us/aperture/example-04.html

Fast jag valde "Move Finder items" istället för Aperture-saken. Problemet är att Automator-workflow'et (bra ord!) precis som launchd drar igång såfort man lägger dit en fil. Är det en liten fil går det bra, då hinner den kopieras in i mappen innan det händer nåt. Men med stora filer är det värre, då hela filen inte hinner dit innan den flyttas. En Pause-action skulle kunna funka, men jag vet inte i förväg hur stor filen är, och hur länge jag behöver vänta innan jag kopierar bort filen.

Jag skulle vilja säkerställa att filen verkligen kopierats färdigt innan jag gör något med den. Från ett shell script skulle man kunna kolla last modification time eller liknande. Får kika på det..

Ursprungligen av johanf:

En Pause-action skulle kunna funka, men jag vet inte i förväg hur stor filen är, och hur länge jag behöver vänta innan jag kopierar bort filen.

Lägg till en "Ask for confirmation" action i början av ditt workflow. När du lägger något i mappen så drar "Folder-Action igång" men gör inget innan du tryck ok (vilket du enkelt "kringla + tab:ar", sedan "Enter" till när du väl är redo för att skriptet ska köra igång).

Vet dock inte om detta löser ditt problem. Jag använder det för att vänta in att X st bilder läggs i en ny mapp innan de flyttas över till server. Utan att vänta på "Confirmation" så lägger action:et över den nya mappen till servern, utan att vänta på att den fylls med bilder först.

  • Medlem
  • Varberg
  • 2006-02-03 01:09
Ursprungligen av MagnusB:

Lägg till en "Ask for confirmation" action i början av ditt workflow. När du lägger något i mappen så drar "Folder-Action igång" men gör inget innan du tryck ok (vilket du enkelt "kringla + tab:ar", sedan "Enter" till när du väl är redo för att skriptet ska köra igång).

Vet dock inte om detta löser ditt problem. Jag använder det för att vänta in att X st bilder läggs i en ny mapp innan de flyttas över till server. Utan att vänta på "Confirmation" så lägger action:et över den nya mappen till servern, utan att vänta på att den fylls med bilder först.

Mjo, fast i mitt fall funkar det inte, då jag vill att detta ska kunna ske helt utan användarinblandning. Jag får testa lite med 30sek paus i mitt workflow, och se om det dimper ner större filer..

Vad jag vet så kan man flytta filerna innan de har kopierat färdigt i os x. Har för mig att det har funkat nån gång för mig. (Lita inte för mycket på det!)

  • Medlem
  • Mölndal
  • 2006-02-06 22:43

Du kanske kan skriva en loop, som var x:te sekund tittar om aktuell fil blivit större eller ändrat datum? När detta slutar ske ändras är filen redo att göras saker med.

1
Bevaka tråden