- Taz_1999
- Medlem ●
- Stockholm
Leker lite med Applescript och det manus jag postade tidigare idag. Vad jag vill göra är att mata ut de hårddiskar jag anger (vilket är lätt, se nedan) och sedan lägga tillbaka samma hårddiskar på skrivbordet ingen, då utan att starta om förstås.
Att mata ut en viss hårddisk kan se ut så här tex:
tell application "Finder" if disk "Mumma" exists then eject "Mumma" end if end tell
Men när jag har gjort det, finns det något sätt (kanske ett UNIX-kommando som jag kan be Applescript köra i terminalen eller någon scriptbar applikation) som kan lägga tillbaka skivan på skrivbordet igen, utan att starta om?
Har testat:
Avsluta och starta "Finder" - vilket jag trodde betyder att den letar efter diskar igen, det gör den inte.
Kolla om Disc Utility, som kan montera diskar anslutna till datorn, är scriptbar, det är den inte.
Söka på Apple Support - inget resultat.
Söka på Versiontracker - inget resultat.
Söka på Applescript Sourcebook - inget resultat.
Någon med några kreativa idéer?
/Ola
tjena Ola,
kollade lite på ditt städscript, mkt lärorikt, håller fortfarande på att lära mig/förstå koden!
Eftersom jag inte har mina HDs monterade men ibland CDs så tänkte jag först att man kunde excluda dem direkt från start, typ med:
set allFolders to every folder of desktop whose type is not disk or CD
(!inte korrekt AS)
En workaround skulle kanske kunna vara att öppna ett nytt fönster med Desktop och flytta mapparna där istället (eftersom diskar inte listas i fönster... kan det va ngt?
Skrevs ursprungligen av mudsam
Har du tittat på det här?
http://www.macosxhints.com/article.php?story=20020606092037225
/Johan
Kanske jag var otydlig. Det är verkliga diskar (FireWire-diskar) jag vill montera på nytt, inte Disc Images (filer som beter sig som diskar).
Jag kunde nämt att det finns flera lösningar för att "mounta" disk images, både på Versiontracker i form av separata program för det och via Disk Copy (scriptbar applikation) och även det tips du hittade ovan via terminalen.
Stort tack för att du kollade i alla fall, tekniken med att via Applescript köra UNIX-kommandon i terminalen är mycket intressant och artikeln du länkar till visar att det inte är så svårt.
/Ola
Skrevs ursprungligen av mattan
tjena Ola,
kollade lite på ditt städscript, mkt lärorikt, håller fortfarande på att lära mig/förstå koden!
Eftersom jag inte har mina HDs monterade men ibland CDs så tänkte jag först att man kunde excluda dem direkt från start, typ med:
set allFolders to every folder of desktop whose type is not disk or CD
(!inte korrekt AS)
En workaround skulle kanske kunna vara att öppna ett nytt fönster med Desktop och flytta mapparna där istället (eftersom diskar inte listas i fönster... kan det va ngt?
Jag kollade lite på det du skrev:
Om jag skapar ett script som innehåller
tell application "Finder"
get items
end tell
så får jag i resultatfönstret (Kommando+L) fram:
{startup disk of application "Finder", application file "CleanUp.app" of desktop of application "Finder", folder "Installerare" of desktop of application "Finder", folder "Upphittat" of desktop of application "Finder"}
(Ett tips som inte har med detta att göra men som gör det enklare att öppna ordlistan för Finder är att du skapar ett alias av Finder-filen (den som ligger i /System/Library/CoreServices/). När du sedan vill öppna ordlistan så drar du och släpper aliaset på symbolen du har i dockan för Manusredigeraren. Någon dag skall jag fixa ett script för det med...)
Kollar man i ordlistan för Finder på ordet Folder så ser man inheritence: container. Det betyder att en folder ärver vissa egenskaper (eller snarare parametrar) från en container. Kollar man på container ser man inheritance: item. Kollar man på item så ser man att det finns en parameter som kallas för kind. Så detta manus som jag testade gav ett intressant resultat:
tell application "Finder"
get kind of startup disk of application "Finder"
end tell
Svaret blir nämligen: "Enhet"
Så för att utesluta hårddiskar och CD-skivor så testa ovanstående snuttar och "sammanfatta" era resultat i följande manus:
tell application "Finder"
set allFolders to every folder of desktop whose (name is not "Upphittat" and kind is not "Enhet")
end tell
Jag gissar att en CD och en hårddisk har samma "kind" så detta borde fungera och det är bara att lägga till detta i manuset jag postade tidigare.
/Ola
Skrevs ursprungligen av Taz_1999
(Ett tips som inte har med detta att göra men som gör det enklare att öppna ordlistan för Finder är att du skapar ett alias av Finder-filen (den som ligger i /System/Library/CoreServices/). När du sedan vill öppna ordlistan så drar du och släpper aliaset på symbolen du har i dockan för Manusredigeraren. Någon dag skall jag fixa ett script för det med...)
Jag trixade ihop ett script. Det lustiga var att det inte går att öppna ordlistan för Script Editor genom dra-släpp... nåja behövde egentligen inte den och appen är skriptbar.
tell application "Finder"
set diskName to name of startup disk as string
set fullpath to diskName & ":System:Library:CoreServices:Finder.app:" as alias
end tell
tell application "Script Editor"
activate
open fullpath as alias
end tell
Om man vill så kan man ta bort första delen och skriva pathen direkt. vad är nyttan av alias föresten?
Jag gissar att en CD och en hårddisk har samma "kind" så detta borde fungera och det är bara att lägga till detta i manuset jag postade tidigare.
Jepp, funkar utmärkt, men med "Volume" med US system!
Ledsen Micke, men jag fattar inte riktigt beskrivningen av UNIX-kommandot mount.
Tror det bottnar i att jag inte har UNIX-kunskaper nog för att veta huruvida en hårddisk som är ansluten till datorn (via FireWire) men som är "lagd i papperskorgen" via ett Applescript, lämnar några spår efter sig i UNIX och kan fås att via ett UNIX-kommando, som tex mount, dyka upp på skrivbordet igen, utan att rycka ut sladden och sätta i den igen, eller starta om datorn.
Provade lite av varianterna, tex mount -a som jag förstod betyder mount all, men det hjälpte inte heller.
SKriver jag bara mount får jag fram en lista (som skall vara en fil som heter fstab) som verkar innehålla något relaterat till volymer, men jag begriper inte det heller.
Mera hjälp? Pretty please with sugar on top?
/Ola
Det du kan göra är att skriva mount i terminalen när disken är monterad. Då ser du hur den är monterad i Unix, t.ex.
/dev/disk1s0 on /Volumes/Mumma.
När du vet hur den monterar din firewire disk kan du använda det för att återmontera den i ett senare läge.
T.ex. om din firewire disk dyker upp på /dev/disk1s0 så använder du följande kommando för att återmontera den:
mount -t hfs /dev/disk1s0 /Volumes/Mumma
Du får prova dig fram, men ovastående borde funka bra.
/Johan
Tack för hjälpen. Jag missar nog något för det fungerar inte riktigt...
Så här blir det när jag skriver mount och disken är på skrivbordet:
[Ola-Anderssons-dator:~] ola% mount
/dev/disk0s5 on / (local)
devfs on /dev (local)
fdesc on /dev (union)
<volfs> on /.vol (read-only)
automount -fstab [354] on /Network/Servers (automounted)
automount -static [354] on /automount (automounted)
/dev/disk1 on /Volumes/Plutten 30 Gb (local)
Jag slänger Plutten 30 GB i papperskorgen och efter det provar jag först med mount och ser att sista raden är borta och sedan detta:
mount -t hfs /dev/disk1sO /Volumes/Plutten 30 Gb
Det ger följande svar:
[Ola-Anderssons-dator:~] ola% mount -t hfs /dev/disk1sO /Volumes/Plutten 30 Gb
usage: mount [-dfruvw] [-o options] [-t ufs | external_type] special node
mount [-adfruvw] [-t ufs | external_type]
mount [-dfruvw] special | node
Har provat med disk1 istället för disk1s0 och har även provat med och utan "on" före /Volumes och provat med både stort O och en nolla.
Skriver jag bara mount igen, så fattas en rad för Plutten 30 Gb.
Någon som direkt ser vad som är fel?
/Ola
Skrevs ursprungligen av Taz_1999
/dev/disk1 on /Volumes/Plutten 30 Gb (local)
mount -t hfs /dev/disk1sO /Volumes/Plutten 30 Gb
Har provat med disk1 istället för disk1s0 och har även provat med och utan "on" före /Volumes och provat med både stort O och en nolla.
Skriver jag bara mount igen, så fattas en rad för Plutten 30 Gb.
Någon som direkt ser vad som är fel?
/Ola [/B]
infon som komandot mount ger dig är förskönat för att det skall vara lätt för dig att läsa. För att du skall montera din disk skall du alltså bara skriva "mount -t hfs /dev/disk1 /Volumes/Plutten"
Mvh Lari
Ledsen om jag verkar trög, men det fungerar inte heller. Provade både med och utan 30 Gb efteråt. Det enda jag får är texten om Usage: + parametrarna jag postade tidigare.
Provat flera gånger och kollat med endast mount så att det står lika i kommandot med parametrar.
Mystiskt...
Tack för alla förslag.
/Ola
Om volym namnet innehåller mellanskag. "Plutten 30 GB"
så måste man skriva "PLutten\ 30\ GB" i terminalen
Detta är ett bra skäl till att inte döpa partitioner och liknande till namn som innehåller åäö samt mellanslag.
mount -t hfs /dev/disk1s0 /Volumes/Plutten\ 30\ GB
disk1s0 anger vilken partition på vilken disk som skall mountas. I det här fallet disk1 (andra disken) s0 = slice0 (första partitionen)
Sen kan det även vara så att destinationen måste finnas; det måste finnas en katalog i /Volumes som heter "Plutten 30 GB" för att det skall gå att mounta en partition där.
är nästan säker på att du kan skriva det inom situationstecken
typ mount -t hfs /dev/disk1s0 "/Volumes/Plutten 30 GB"
eller så... men jag kan ha fel, orkar inte kolla upp det...
Stort tack för denna lilla inblick i UNIX.
Skrevs ursprungligen av Narogh
Om volym namnet innehåller mellanskag. "Plutten 30 GB"
så måste man skriva "PLutten\ 30\ GB" i terminalen
Detta är ett bra skäl till att inte döpa partitioner och liknande till namn som innehåller åäö samt mellanslag.
mount -t hfs /dev/disk1s0 /Volumes/Plutten\ 30\ GB
disk1s0 anger vilken partition på vilken disk som skall mountas. I det här fallet disk1 (andra disken) s0 = slice0 (första partitionen)
Sen kan det även vara så att destinationen måste finnas; det måste finnas en katalog i /Volumes som heter "Plutten 30 GB" för att det skall gå att mounta en partition där.
Har provat ditt förslag, men efter att volymen är lagd i papperskorgen så fungerar det inte att skriva det du föreslår för att få tillbaka den på skrivbordet igen.
Jag har även provat att döpa om disken endast till Plutten, och ändrar då kommandot på motsvarande sätt och det fungerar inte.
Jag får som svar på alla försök "Volume not found".
[Ola-Anderssons-dator:~] ola% mount -t hfs /dev/disk1s0 /Volumes/Plutten
/sbin/mount_hfs: stat /Volumes/Plutten: No such file or directory
Sedan noterade jag att om jag väljer "Gå till mapp" i menyn "Gå" och sedan skriver "/Volumes" så öppnas ett fönster. När jag drar ur sladden och stoppar in den igen, så mountas disken på skrivbordet och ett alias av den dyker upp i mappen "Volumes". När jag lägger disken i papperskorgen igen, så försvinner aliaset.
Så kanske är det så att inte heller UNIX kan mounta en disk som inte finns på skrivbordet (vet att det låter fånigt, men det verkar vara så).
Bifogar en bild av hur det ser ut när disken är mountad i mappen Volumes. När disken är slängd i papperskorgen är mappen tom.
Skojigt med liten inblick i UNIX.
/Ola
Skrevs ursprungligen av johan dansk
är nästan säker på att du kan skriva det inom situationstecken
typ mount -t hfs /dev/disk1s0 "/Volumes/Plutten 30 GB"
eller så... men jag kan ha fel, orkar inte kolla upp det...
Tack Johan, det fungerade tyvärr inte heller.
Provade senare som inlägget ovan visar att döpa om hårddisken endast till "Plutten" men det fungerar inte.
/Ola
[Ola-Anderssons-dator:~] ola% mount -t hfs /dev/disk1s0 /Volumes/Plutten
/sbin/mount_hfs: stat /Volumes/Plutten: No such file or directory
Detta felmeddelande fick du därför att katalogen "Plutten" inte existerar i /Volumes
Det går mnämligen att mounta partitionerna var man vill,
mount -t hfs /dev/disk1s0 /Users/Desktop/FireWire
mountar disken i katalogen Firewire på skrivbordet förutsatt att den existerar.
Nu har jag provat lite olika saker:
* Skapa en mapp själv i mappen Volumes med olika namn Plutten eller FireWire och sedan skriva motsvarande kommando för mount med rätt sökväg
* Har även provat att skapa en ny mapp på skrivbordet (och även) utan och försökt att mounta till mappen /Users/ola/Desktop/ som jag vet att min Desktopmapp heter.
* Har kollat att jag kan gå till mappen jag skapat via menyn Gå och det fungerar.
Så även om det är intressant med en inblick i hur UNIX fungerar så tror jag kommit så långt jag kan.
Min teori är att o och med att aliaset som finns i mappen /Volumes försvinner när jag matar ut hårddisken, så kan inte kommandot mount "komma åt" disken igen och lägga tillbaka den på skrivbordet, även om den fysiska (ällägtrizka) kopplingen finns kvar.
Det krävs kanske något annat för att initiera en förfrågan i FireWire-sladden och leta efter diskar att slänga på skrivbordet än kommandot mount?
Tack för alla försök att hjälpa mig Narogh och alla ni andra, det uppskattas!
/Ola