Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.
OldMac

OldMac

Medlem
  • Plats Stockholm
  • Registrerad 2006-09-19
  • Senast aktiv 2012-03-27
  • Antal inlägg 28

Foruminlägg

De senaste inläggen OldMac har skrivit i forumet.

  • Medlem
  • Stockholm
  • 2008-07-11 23:17

"mmmm det går inget vidare för mig.
Nu vill jag att scriptet ska se om en mapp är tom, finns det någon fil i mappen så ska den fortsätta som vanligt, men om den är tom så ska den loopa scriptet från början.

går det?

eivind"

Har du övergivit konceptet som jag föreslog? Pratar du om Automator-skript eller AppleScript, och för vilken mapp? Och hur har du tänkt dig resten? Det du skriver är oklart i fråga om vad 'fortsätta som vanligt' betyder, och med vilken avsikt som skriptet ska 'loopa från början'.

  • Medlem
  • Stockholm
  • 2008-07-09 18:11

"wow! ja verkligen vilket engagemang:-) jag bugar och bockar.
Jag ska sätta igång och pilla direkt så återkommer jag med frågor:-)"

Jag tackar!

En lätt korrigering bara - jag skrev: "Återstår därefter bara att skapa ett fristående AppleScript - en kopia av koden i mappkommandot - och lägga till en rad i Automator som öppnar den filen som sista åtgärd innan Automator-skripet avslutas."

Den beskrivningen råkar innehålla ett fel. Att göra en kopia av koden i mappkomandot skulle ju innehålla även den tillagda startkoden och avslutningen som jag beskrev under punkerna 2 & 4 i min senaste längre post. Korrekt är istället att använda skriptkoden som jag postade tidigare för det AppleScript som Automator avslutande anropar, utan några förändringar (annat än vad som kan krävas pga av mapparnas namn och placeringar). Det AppleScriptet kan dessutom med fördel sparas som 'programpaket' (som nämnt tidigare) istället för 'manus'.

Så besparde jag dig åtminstone den undran över varför det inte fungerade...

  • Medlem
  • Stockholm
  • 2008-07-07 19:30

Jag kan gå en smula i förväg i väntan på dina frågor...

1. Skapa och döp mapparna nr 1 & 2. För att enklast kunna följa mitt kod-förslag: placera mapparna på den hårddisk som är startskiva.

2. Till min tidigare publicerade AppleScript kod, lägg till som första rad: "on adding folder items to this_folder after receiving these_items" [skriv kodraden utan citationstecknen]

3. Bestäm var på hårddisken - eller om det nu är på skrivbordet - som du vill ha ditt Automator-skript liggande. Skriv sedan före "end tell" i min tidigare postade AppleScript-kod, ett kommando som startar Automator-skriptet. Kod-princip: "... open file "xxxx" in folder "yyyy" of startup disk..." [skriv koden utan det första och det sista citationstecknet, och utan de inledande och avslutande pounkterna - citationstecknen kring 'file och folder' ska dock stå där de står]

4. Lägg som en sista rad till AppleScript-koden: "end adding folder items to" [skriv också denna kodrad utan citationstecknen].

[genom de tillagda raderna under punkterna 2="2" & 4="4" är nu skripet instruerat att - efter ha kopplats till en mapp aktiveras av filer som läggs i mappen]

4. Gå till mappen "Program". Där hittar du AppleScript's manus-redigare. Kopiera koden och klistra in den i manusredigeraren. Tryck på kompilera. Om allt är rätt utfört, kompileras koden.

5. Efter att jag tittade närmare på hur man kopplar AppleScript till ett mappkommande såg jag att man ska inte för mappkommandon spara som 'programpaket', vilket jag föreslog tidigare. Istället spar du som "Manus", utan "Startskärm", och med synlig filändelse ".scpt".

Den sparda programfilen placerar du i mappen "Folder Actions" i Biblioteket (förutsatt att du inte av säkerhetsskäl vill förvissa dig om att endast du som användare kan köra mappkommandot - i så fall tror jag att du måste använda dig av det Bibliotek som ligger under den personliga användarmappen).

6. För att koppla programfilen till den första av de två mapparna som min föreslagna programkonstruktion bygger på: öppna Manusredigeraren igen i AppleScript-mappen i mappen "Program" på hårddisken - högerklicka (eller dess motsvarighet) för att få fram Manusredigerarens kontext-meny. Om så behövs, kryssa i "Mappkommando" högst upp till vänster. Klicka sedan på "+" nedtill till vänster under vänstra fönstret och välj den mapp du har bestämt som mapp nr 1. Klicka därefter på "+" under högra fönstret, och bläddra fram programfilen där du lagt den i mappen "Folder Actions" - välj programfilen.

7. Du ska nu ha ett fungerande mappkommando. Hamnar en fil i den första mappen förs filen vidare till mapp nr 2 om denna inte innehåller någon fil. Återstår därefter bara att skapa ett fristående AppleScript - en kopia av koden i mappkommandot - och lägga till en rad i Automator som öppnar den filen som sista åtgärd innan Automator-skripet avslutas.

8. Och om du tycker att det här verkar vara för komplicerat och önskar att jag eller någon annan gör jobbet istället...det går alltså inte! Kodförslag kan du alltid få, men för att få detta att slutligen fungera måste alltså en del åtgärder göras av dig direkt i din dator.

Men som sagt, ta ett steg i taget så går det nog bra.

  • Medlem
  • Stockholm
  • 2008-07-07 18:26

Nej, inte vill jag ta betalt. Dessutom kan jag ju inte Automator. Och jobbet är ändå redan så gott som gjort. Du har ju själv gjort ett Automator-skript som fungerar, och av mig har du fått förslag på ett AppleScript som vad jag vet fungerar. Det är nästan ingen kodning som återstår, utom att du behöver lägga till en rad i ditt Automator-skript så att det avslutar med att starta det Applescript som arbetar med Mapp nr 1.

Mitt tidigare postade förslag ser antagligen lite komplicerat ut, men ta ett steg i taget så kommer du att se att det blir rätt lätt. Och tycker du att det ändå är svårt - ställ en fråga i taget kring vad du fastnar på, så svarar jag eller någon annan.

Så, första frågan... ?

  • Medlem
  • Stockholm
  • 2008-06-15 21:01

Först behövs alltså en mapp nr 1 & mapp nr 2.

Följande är en beskrivning och förklaring av den schematiska struktur som mitt koncept består av:

1. När en fil dras till mapp nr 1 triggas en 'Folder Action' kopplad till mapp nr 1 som undersöker om mapp nr 2 innehåller någon fil.

2. Är mapp nr 2 tom flyttas fil nr 1 från mapp nr 1 till mapp nr 2 - vilket triggar den 'Folder Action' som är kopplad till mapp nr 2, som behandlar och skickar iväg filen. Om mapp nr 2 däremot redan innehåller en fil, flyttas ingen fil från mapp nr 1 till mapp nr 2.

3. Båda utfallen under punkt nr 4 (att en fil flyttas eller inte flyttas mellan mapparna nr 1 & 2) innebär att skriptet kopplat till mapp nr 2 endera är aktivt eller blir aktivt. Fördelen med detta är att Automator-skriptet kopplat till mapp nr 2 kan varje gång på nytt starta skriptet kopplat till mapp nr 1. Resultatet är att de filer som läggs i mapp nr 1 - vare sig det är en eller flera filer på en gång, och vare sig det redan finns filer i mapp nr 1 eller ej - kommer att föras en i taget för behandling i mapp nr 2 av Automator-skriptet tills mapp nr 1 är helt tömd på filer.

En smärre komplikation att ev. hantera: jag vet inte om skriptet kopplat till mapp nr 2 kan starta skriptet som är kopplat till mapp nr 1 pga av att detta är avsett att aktiveras som en 'Folder Action'? Om endast flyttningen av en fil till mapp nr 1 kan trigga skriptet kopplat till mappen - då går det istället att göra en fristående kopia av skriptet som gör precis samma sak som 'Folder-Action-skriptet' för mapp nr 1, och som problemfritt kan startas av Automator-skriptet kopplat till mapp nr 2, innan det senare avslutas.

4. Allt som står under de förra punkterna är mycket lättare att utföra än att läsa om det!

--------

Om det skulel vara svårt att skriva skriptet för mapp nr 1 i Automator, går det att skriva ett AppleScript istället med följande typ av grundkod:

tell application "Finder"
activate

set numberOfFilesInFolder1 to the number of files in folder "Mapp 1" of desktop as integer
set numberOfFilesInFolder2 to the number of files in folder "Mapp 2" of desktop as integer

if numberOfFilesInFolder1 is greater than 0 then
if numberOfFilesInFolder2 is less than 1 then

set fileNumberOne to file 1 of folder "Mapp 1" of desktop

move fileNumberOne to folder "Mapp 2" of desktop

end if
end if

end tell

quit

Spar AppleScipt:et som 'programpaket' utan 'startskärm' om du använder en Intel-Mac - det blir då en Intel-fil och Rosetta behöver inte tas i anspråk för att köra filen - annars kan du spara AppleScript-filen som 'program' (utan 'startskärm').

Om istället för exemplets 'desktop', sökvägen till mapparna nr 1 & 2 ska gå till en hårddisk som är startskiva, är kod-principen följande för t ex en mapp som ligger i en mapp: set fileNumberOne to file 1 of folder "Inre mappen" of folder "Yttre mappen" of startup disk

Själv använder jag inte 'Folder Actions' för AppleScript och minns därför bara grundprinciperna som jag lärde mig för några år sedan - men vad jag minns är resten rätt lätt. Förutom skriptets anslutning till mapp nr 1, behövs till ovanstående AppleScript-kod en särskild inledande och avslutande kodrad för att den ska fungera som 'Folder Action'. Hur detta skrivs står i AppleScript's 'Hjälp-funktion', eller så kan sannolikt någon här i forumet bidra med upplysning.

" Kan man göra något redan här för att göra det som du beskrev"

Jag kan som sagt inte Automator. Men om ditt skript fungerar som avsett vad gäller behandlingen av filen räcker det med att lägga till ett kommando som öppnar skriptet som hanterar mapp nr 1 (se under punkt nr 3).

Övrigt: om du vill så går det att lägga till en avbrotts-dialog som dyker upp varje gång en ny fil ska flyttas till mapp nr 2 för behandling. Det går t ex att utforma dialogen så att den påkallar uppmärksamheten med ljudsignal, samt försvinner efter valt antal sekunder om inget avbrott ska göras varpå processen rullar vidare automatiskt.

Återkom gärna med frågor.

  • Medlem
  • Stockholm
  • 2008-06-15 13:51
Ursprungligen av eivindvr:

till old mac

det lät bra d ä precis så jag vill göra:) har gjort mitt script i automator dvs att jag kan typ inget om script igentligen. Men jag skulle jätte gärna se en guide som gör det du just beskrev. tanken är att allt ska gå automatiskt.

"Guide"? Syftar du på en schematisk uppställning av ideen - eller på skriptkod?

Jag kan en del om AppleScript men inget om Automator - vet alltså inte vad du kan göra och inte göra med den senare typen av skript. Så behöver du kod för Automator är jag ställd.

Att själva iden går att få ihop är jag dock övertygad om. Skulle Automator ha begränsningar så finns ju även AppleScript. Ifall det räcker att jag spaltar upp konceptet i punkter så kan jag återkomma med det senare idag.

  • Medlem
  • Stockholm
  • 2008-06-14 17:56

Kan ett system med två mappar vara enklare?

Ide: filerna läggs i första mappen, hämtas av skriptet för behandling till andra mappen som aldrig innehåller mer än en fil varför det nuvarande problemet aldrig uppstår. Skriptkoden måste då innehålla, att efter varje fil är färdigbehandlad och ivägsänd kontrollerar skriptet antal filer i den första mappen - samt för över vad som då räknas som fil nr 1 i första mappen, till andra mappen för behandling.

Antagligen är det med den lösningen enklast att starta skriptet manuellt med ett skript-alias placerat i dockan - när en fil läggs i första mappen går det lätt att kolla i dockan om skriptet är igång eller ej. Alternativet skulle kunna vara att en 'Folder Action' kan startas av den första filen i mapp nr 1 - filen förs till mapp nr 2 endast om denna är tom, annars väntar skriptet med filöverföringen (med reservation för att jag är 'Applescriptare' och inte känner till Automators begränsningar). Ett till alternativ, och antagligen det snyggaste: en 'Folder Action' i mapp nr 1 matar filer till mapp nr 2 om denna är tom. Mapp nr 2 har i sin tur en 'Folder Action' som behandlar och skickar iväg filen, därefter triggar denna respons hos den 'Folder Action' som kör mapp nr 1 - nya filer matas till mapp nr 2 förutsatt att det finns några filer i mapp nr 1.

  • Medlem
  • Stockholm
  • 2008-03-28 14:32

Kan inte påstå att jag har koll - men en sak som slår mig som möjligen ologisk i kommandosträngen är hur den anropar dels en automatisk åtgärd, dels en åtgärd med "options", men utan att specificera en vald 'option'. Kan detta vara felkällan?

  • Medlem
  • Stockholm
  • 2007-08-07 16:08

Det lilla jag har läst om den feltypen är att det är ett fel som kan bero på att ett objekt saknas, inte finns där det ska, har fel namn, osv - till mer obestämt systemrelaterade orsaker.

Jag har varken sysslat med film eller är särskilt van vid skripttypen (andras koder tenderar ju att vara svårare att förstå än ens egna) varför jag inte har så mycket att komma med av förslag. Det enda som slår mig är att jag inte ser vilket värde som läggs i oneDoc (ser ingen tilldelning av den variabeln) och om det möjligen kan vara en felkälla då repetitionen utgår från oneDoc?

  • Medlem
  • Stockholm
  • 2007-08-06 01:55

Vad sägs om: set the movie_file to the name of movie 1 & ".mov" Åtminstone verkar exportering ske med den koden.

Alternativt: kan du tänka dig att döpa om filerna stängda istället? (mycket lättare!)

  • Medlem
  • Stockholm
  • 2007-08-04 01:32

Kan det hjälpa att förändra den namngivande delen av koden till "Set the movie_file to name of..." osv. ?

  • Medlem
  • Stockholm
  • 2006-10-06 18:11

Jag fick svaret i ett annat forum: det går, men är komplicerat över gränsen till det meningslösa att försöka återvinna kod ur AppleScript som är sparda som 'Run only'.

  • Medlem
  • Stockholm
  • 2006-10-03 20:35

Hej,

Ett av mina AppleScript som jag skulle vilja ändra koden i, visar ingen kod när jag öppnar skriptet. Antagligen har jag av misstag råkat spara programfilen som 'endast körbar'.

Jag har läst att det ändå ska finnas något sätt att utvinna koden ur denna 'säkra' typ av fil. Vet någon hur det går till? Är det komplicerat?