Bien sûr, je ne connais pas l'étendue totale de ce que vous essayez d'accomplir, mais comme vous l'avez actuellement codé, l'écran de l'ordinateur de l'entreprise n'a pas été modifié. script pourrait être exécuté à partir d'une autre source que le lecteur USB cible. J'ai donc écrit la commande un peu différemment, mais elle obtient le résultat suivant point de montage sur la base de la numéro de série si le lecteur USB cible est monté. Vous pouvez alors vous brancher en fonction des conditions, c'est-à-dire si le script est exécuté depuis le lecteur USB cible ou non et si le lecteur USB cible est monté ou non, etc. Après avoir obtenu le point de montage dans le code j'ai inclus un autre bloc de code pour tester si la clé USB cible est montée et d'où le script a été exécuté. Ceci n'est évidemment qu'un exemple de test et vous devrez faire ce dont vous avez besoin. La ligne de fond ici est, comment j'ai codé l'obtention de l'option point de montage du lecteur USB cible en fonction de la numéro de série et je suppose que c'est ce que tu cherches vraiment.
Voici mon point de vue sur le code et son résultat lorsqu'il est exécuté à partir du bureau et de la clé USB cible :
- Remarque : avant de l'utiliser, changez le numéro de série ci-dessous à la valeur appropriée.
Code AppleScript :
-- # Get the volume this script is located on.
tell application "Finder"
try
set theVolumeThisScriptIsLocatedOn to text 1 thru -2 of POSIX path of (disk of (path to me) as alias)
log "The volume this script is located on is: " & quoted form of theVolumeThisScriptIsLocatedOn
on error
set theVolumeThisScriptIsLocatedOn to POSIX path of (disk of (path to me) as alias)
log "The volume this script is located on is: " & quoted form of theVolumeThisScriptIsLocatedOn
end try
end tell
-- # Set the Serial Number of the target USB Drive.
set usbSerialNumber to "200434112111BA425FA4"
-- # See if the USB Drive matching 'usbSerialNumber' is mounted and if so, get its mount point.
-- # The variable 'usbMountPoint' will contain either its mount point, e.g., '/Volumes/...', or '' as in nothing.
set usbMountPoint to (do shell script "system_profiler SPUSBDataType | awk '/" & usbSerialNumber & "/' RS= | awk -F': ' '/Mount Point: /{print $2}'") as text
log "The mount point is: " & quoted form of usbMountPoint
if usbMountPoint is equal to "" then
log "The target USB Drive is not mounted!"
else
log "The target USB Drive is mounted!"
end if
-- # See if the script is running from the target USB Drive or elsewhere.
if usbMountPoint is not equal to "" and theVolumeThisScriptIsLocatedOn is equal to usbMountPoint then
log "This script is running from the target USB Drive!"
else
log "This script is not running from the target USB Drive!"
end if
Réponds lorsqu'il est exécuté à partir du lecteur USB cible :
tell current application
path to current application
--> alias "16GB-USB:USB Test.scpt"
end tell
tell application "Finder"
get disk of alias "16GB-USB:USB Test.scpt"
--> alias "16GB-USB:"
(*The volume this script is located on is: '/Volumes/16GB-USB'*)
end tell
tell current application
do shell script "system_profiler SPUSBDataType | awk '/200434112111BA425FA4/' RS= | awk -F': ' '/Mount Point: /{print $2}'"
--> "/Volumes/16GB-USB"
(*The mount point is: '/Volumes/16GB-USB'*)
(*The target USB Drive is mounted!*)
(*This script is running from the target USB Drive!*)
end tell
Réponses lorsqu'elles sont exécutées à partir du bureau avec le lecteur USB cible connecté :
tell current application
path to current application
--> alias "Macintosh HD:Users:me:Desktop:USB Test.scpt"
end tell
tell application "Finder"
get disk of alias "Macintosh HD:Users:me:Desktop:USB Test.scpt"
--> alias "Macintosh HD:"
end tell
tell current application
path to current application
--> alias "Macintosh HD:Users:me:Desktop:USB Test.scpt"
end tell
tell application "Finder"
get disk of alias "Macintosh HD:Users:me:Desktop:USB Test.scpt"
--> alias "Macintosh HD:"
(*The volume this script is located on is: '/'*)
end tell
tell current application
do shell script "system_profiler SPUSBDataType | awk '/200434112111BA425FA4/' RS= | awk -F': ' '/Mount Point: /{print $2}'"
--> "/Volumes/16GB-USB"
(*The mount point is: '/Volumes/16GB-USB'*)
(*The target USB Drive is mounted!*)
(*This script is not running from the target USB Drive!*)
end tell
Réponses lorsqu'elles sont exécutées à partir du bureau sans le lecteur USB cible connecté :
tell application "Finder"
get disk of alias "Macintosh HD:Users:me:Desktop:USB Test.scpt"
--> alias "Macintosh HD:"
end tell
tell current application
path to current application
--> alias "Macintosh HD:Users:me:Desktop:USB Test.scpt"
end tell
tell application "Finder"
get disk of alias "Macintosh HD:Users:me:Desktop:USB Test.scpt"
--> alias "Macintosh HD:"
(*The volume this script is located on is: '/'*)
end tell
tell current application
do shell script "system_profiler SPUSBDataType | awk '/200434112111BA425FA4/' RS= | awk -F': ' '/Mount Point: /{print $2}'"
--> ""
(*The mount point is: ''*)
(*The target USB Drive is not mounted!*)
(*This script is not running from the target USB Drive!*)
end tell
Comprendre ce que le set usbMountPoint to (do shell script "...") as text
La ligne de commande permet de définir le valeur de la usbMountPoint
variable .
-
system_profiler SPUSBDataType |
sort toutes les informations relatives au matériel USB et est ensuite acheminé vers la première occurrence de awk
dans la ligne de commande.
-
awk '/" & usbSerialNumber & "/' RS= |
cherche le numéro de série et sort tout ce qui se trouve sur la première ligne vide avant le site numéro de série et la première ligne vierge après le site numéro de série et sa sortie est ensuite acheminée vers la deuxième occurrence de awk
dans la ligne de commande. Cela garantit que la seule ligne contenant ' /Mount Point:
dans la sortie est associé à l'élément numéro de série (si le lecteur USB cible est monté).
-
awk -F': ' '/Mount Point: /{print $2}'
trouve la ligne contenant 'Mount Point: '
puis utilise ': '
comme séparateur de champ et imprime le deuxième champ qui sera soit le nom de chemin POSIX du point de montage du lecteur USB cible, soit ''
comme dans rien (parce qu'il n'a pas été monté).