Kan inte detektera mapp??

Tråden skapades och har fått 14 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • 2004-03-19 10:01

Hej,

Jag är färsk på AppleScript och håller på med ett arkiveringsscript till Eudora. Allt funkar bra utom att skapa arkivmapparna. Problemet är att kunna undersöka om en mapp finns eller inte. Jag har hittat många exempelscript som gör just detta (det var ju inte så svårt egentligen), men det skumma är att inget av dem funkar. Här är det senaste försöket:

property backup_folder : "test"
tell application "Finder"
if not (exists folder backup_folder in (path to documents folder)) then
make new folder in (path to documents folder) with properties {name:backup_folder}
end if
end tell

...set ju ganska enkelt ut. Foldern 'test' skapas ok, men när jag kör skriptet igen så får jag ett felmeddelande som säger att det redan finns ett sådant objekt. Med andra ord har AppleScript inte sett att foldern finns där och försöker skapa en ny. Varför fungerar det inte? Extremt tacksam för svar.

/Tage Widsell
propellerhead software

  • Medlem
  • Gävle
  • 2004-03-19 10:17

Prova:
tell application "Finder"
if file theFolder exists then
gör detta
else
gör detta
end if
end tell

  • Medlem
  • 2004-03-19 10:27

Tack för svaret, men det ger fortfarande alltid false. Så här gjorde jag för att testa:

property theFolder : (path to documents folder as text) & ":test"
tell application "Finder"
if file theFolder exists then
display dialog "true" with icon 1
else
display dialog "false" with icon 1
end if
end tell

Inget felmeddelande, bara false.

Några andra idéer? Kör på PB G4 1000 m 10.3.3 om det spelar någon roll.

/tage

Det är din användning av "in" som är orsaken, använd "of" och gärna också "at" som här nedan:

property backup_folder : "test"
tell application "Finder"
if not (exists folder backup_folder of (path to documents folder)) then
make new folder at (path to documents folder) with properties {name:backup_folder}
end if
end tell

En annan metod är att använda en Try-sats, eftersom Finder inte kan skapa en mapp om det redan finns, det är något effektivare, men marginellt om det bara gäller enstaka mappar

property backup_folder : "test"
tell application "Finder"
try
make new folder at (path to documents folder) with properties {name:backup_folder}
end try
end tell

  • Medlem
  • 2004-03-19 11:21

Märkligt. Funkade ditt exempel hos dig? När jag kör det blir det samma resultat som i mitt exempel. Om mappen inte finns skapas en ny, men om mappen finns får jag ett felmeddelande. Efter som inga exempel som andra har gjort har funkat för mig börjar jag undra om inte det här är någon dyster FileVault-bieffekt. Ja, jag är dum. Jag kör med FileVault.

Try-lösningen fungerar ju visserligen, men det är ju att famla lite i mörkret eftersom den ignorerar alla problem med att skapa en folder. Nåja, det är ju inte världens värstingapplikation jag håller på med, så den lösningen får väl fungera tills vidare. Tack så mycket för hjälpen!

/Tage

ja det funkar hos mig, men personligen föredrar jag try-lösningen, men det beror på vad man är ute efter

  • Medlem
  • 2004-03-19 11:47

...vilket genast leder in mig på nästa problem. Jag kan för mitt liv inte kombinera 'path to documents folder' med namn på foldern jag vill lägga mina grejer i. Jag trodde att det här skulle funka:

make new folder at (path to documents folder) & ":test_folder" with properties {name:backup_folder}

...men det gör det inte. Det verkar som om (path to...) hanteras på ett sätt som jag inte förstår, eller så är felete ett helt annat. Hur jag än gör för att peka ut en mapp som ligger i min documents mapp får jag fel, men om jag gör samma sak på någon annan plats på hårddisken (root och hem tex) så funkar det. Mig misstänker FileVault. Suck.

  • Medlem
  • International user
  • 2004-03-19 11:48

Använd 'info for... ' istället. 'if exists...' verkar ha slutat fungera (som det gjorde förr) på 10.3.

try
info for file ("Macintosh HD:filen")
on error
-- Hantera 'felet' om filen inte finns
end try
  • Medlem
  • 2004-03-19 12:18

FileVault knäcker AppleScript

Efter lite googlande har jag hittat info som bekräftar att FileVault knäcker AS så att man inte kan referera filer och foldrar med namn. Hittade ingen workaround. Jag försökte själv med den uppenbara fixen att referera till min dolda katalog /Users/.tage, men det funkade inte. Surt.

/tage

Det urspungliga problemet tror jag beror på en uppdateringsgrej i Findern. Prova att använda System Events för att kolla om mappen finns, ungefär så här

property backup_folder : "test"
set thePath to (path to documents folder) as string
tell application "System Events"
if not (exists folder backup_folder of folder thePath) then
tell application "Finder"
make new folder at folder thePath with properties {name:backup_folder}
end tell
end if
end tell

Nästa grej är när du vill konkatenera (lägga samman) mappen med ditt mappnamn: Anledningen till att det inte går är att när du frågar efter "path to documents folder" så får du en referens, dvs ett objekt och det kan du inte direkt slå ihop med en sträng, eftersom det är två olika klasser/datatyper.

Du måste först omvandla "path to documents folder" till en sträng, vilket du gör genom att skriva

((path to documents folder) as string)

sen kan du lägga ihop det med din sträng

((path do documents folder) as string) & "test_folder"

Om du sen vill att det ska hänvisa till ett objekt så måste du säga

folder (((path to documents folder) as string) & "test_folder")

Tänk då på att mappen redan måste finnas, annars kommer du att få fel

Jaså där ser man, ja FileVault verkar väl inte vara världens mest genomtestade grej om man säger så...

  • Medlem
  • 2004-03-19 12:50

Tack för hjälpen. Även om FileVault visade sig vara det stora problemet så hjälpte det här mig att slutföra resten. Jag får spara i roten tills någon lagar FileVault.

Det är synd med FV - för idén är egentligen skitbra. Heltransparent kryptering av allt. Det slöar inte ner datorn märkvärt och jag kan tryggt gå omkring med företagets alla hemligheter i väskan. Tyvärr är det ju ganska buggigt. Sedan jag drog igång FV får jag Kernel Panics ganska ofta, Finder har tappat alla inställningar en gång och nu det här... Hoppas de fixar det.

/Tage

  • Medlem
  • Stockholm
  • 2004-06-20 13:11
Ursprungligen av tage:

Tack för hjälpen. Även om FileVault visade sig vara det stora problemet så hjälpte det här mig att slutföra resten. Jag får spara i roten tills någon lagar FileVault.

Det är synd med FV - för idén är egentligen skitbra. Heltransparent kryptering av allt. Det slöar inte ner datorn märkvärt och jag kan tryggt gå omkring med företagets alla hemligheter i väskan. Tyvärr är det ju ganska buggigt. Sedan jag drog igång FV får jag Kernel Panics ganska ofta, Finder har tappat alla inställningar en gång och nu det här... Hoppas de fixar det.

/Tage

En liten fråga: Strular FileVault endast med den krypterade användaren, eller javlas det med hela systemet? Skulle vilja ha litet jobbgrejer med hem, men inte till priset av att mina privata användare strular.

Vänligen, Ylan

  • Medlem
  • 2004-06-21 10:35
Ursprungligen av Ylan:

En liten fråga: Strular FileVault endast med den krypterade användaren, eller javlas det med hela systemet? Skulle vilja ha litet jobbgrejer med hem, men inte till priset av att mina privata användare strular.

Vänligen, Ylan

Såvitt jag vet är det bara den krypterade användaren som får problem. Systemet i övrigt funkar som normalt. Jag har hört att FV funkar bättre nu. En kollega har kört det i ett par månader utan problem.

/tage

  • Medlem
  • Stockholm
  • 2004-06-21 12:24
Ursprungligen av tage:

Såvitt jag vet är det bara den krypterade användaren som får problem. Systemet i övrigt funkar som normalt. Jag har hört att FV funkar bättre nu. En kollega har kört det i ett par månader utan problem.

/tage

OK, skönt att höra!

Tackar, Ylan

1
Bevaka tråden