Volume finden

ObiTobi

ObiTobi

Aktives Mitglied
Thread Starter
Dabei seit
05.11.2009
Beiträge
1.536
Reaktionspunkte
91
Hallo,

ich stehe da mal wieder auf nem Schlauch ;)

Folgende Aufgabenstellung:

Wenn Drive "A" angeschlossen ist, dann tue "dies", wenn Drive "B" angeschlossen ist, dann tue "jenes" usw.
An sich wohl nichts besonderes , aber irgendwie.....
Natürlich könnte ich mit "if exists disk "A" then" usw. aber bei 10 verschiedenen Laufwerken.... erscheint mir das doch recht mühsam und langweilig. Da wird es doch eine "schönere" Methode geben oder?

Tobi
 
Verrate ins mal was mit "tue a oder b" gemeint ist,vielleicht reichen ja die Ordneraktionen.
 
Es war nicht "tue a oder b" gemeint sondern eben wenn A vorhanden dann tue etwas und wenn B vorhanden dann tue was anderes.

Ich habe inzwischen diesen Punkt doch noch scheinbar geschafft.

/* Ich muss doch langsam mein "altes" Perl Skript umschreiben da es nicht mehr ganz an meine Anforderungen passt. Da habe ich mich entschlossen es eben unter OSX mit AppleScript und unter Windows mit PowerShell zu machen */
Windows ist fertig auch wenn ich es z.Z gar nicht brauche :D jetzt muss OSX eben folgen.

Für diesen Teil sieht es z.Z so aus:

PHP:
set cardNames to {"EOS5D-001", "EOS5D-002", "EOS7D-001", "EOS7D-002", "EOSM-001", "EOSM-002"}
tell application "Finder" to set driveNames to name of every disk
repeat with driveName in driveNames
	repeat with CardName in cardNames
		if driveName contains CardName then
			set SourceDrive to driveName
		end if
	end repeat
end repeat

-- Body finden
tell application "Finder"
	if (exists disk "EOS5D-001") or (exists disk "EOS5D-002") then
		set bodyName to "EOS5DMKIII"
	else if (exists disk "EOS7D-001") or (exists disk "EOS7D-002") then
		set bodyName to "EOS7D"
	else if (exists disk "EOSM-001") or (exists disk "EOSM-002") then
		set bodyName to "EOSM"
	end if
end tell



An der Stelle eine Frage zu dem AS Editor - gibt es eine Möglichkeit den beizubringen, dass er meine Variablen nicht nachbessert also die Schreibweise so lässt wie ich es geschrieben habe?

Tobi
 
naja, vielleicht wäre do something when besser als der dauer loop?

oder launchd WatchPaths?
 
Vielleicht.
Wenn das erst mal alles komplett läuft, werde ich mir auch die Zeit für Optimierung vornehmen. Erst soll aber das ganze Fehlerfrei laufen.
 
Das innere repeat ist doch überflüssig.

PHP:
set cardNames to {"EOS5D-001", "EOS5D-002", "EOS7D-001", "EOS7D-002", "EOSM-001", "EOSM-002"}
tell application "Finder" to set driveNames to name of every disk
repeat with driveName in driveNames
   if driveName is in cardNames then
      set SourceDrive to driveName
   end if
end repeat
 
Ich würde das mit einer Folder Action machen, die Du an den Ordner "/Volumes/" anhängst, z.B.:
PHP:
on adding folder items to volumeFolder after receiving theVolumes
	repeat with aVolume in theVolumes
		set n to name of (get info for aVolume)
		tell application "Finder" to display dialog n
	end repeat
end adding folder items to

Ciao
Farid
 
Hallo,

Ordneraktion oder halt gleich mit

launchd -> StartOnMount

Gruß
 
Zurück
Oben Unten