Monter et démonter des disques diversement formatés

14 réponses
Avatar
mv
Hello,

Le script #1 permet de faire monter des volumes formatés Apple (formatage traditionnel et formatage
Core Storage), et formatés "Windows" (FAT32 et ExFAT).

NB Si les volumes formatés "Windows" ont été éjectés via le Finder, la seule solution est de les
débrancher du Mac puis de les rebrancher.
Si ces volumes ont été démontés via le script #2, le script #1 permet de les remonter sans avoir à
les débrancher/rebrancher.

Script #1
***************
set text item delimiters to ""
set liste to (do shell script "diskutil list") as text
set liste to every paragraph of liste as list
set newList to {}
set critere to {"Apple_HFS", "DOS_FAT_32", "Microsoft Basic Data", "Apple_CoreStorage"}
considering case
repeat with unParagraph in liste
repeat with unCritere in critere
if unCritere is in (unParagraph as text) then
copy last word of (unParagraph as text) to the end of newList
end if
end repeat
end repeat
end considering
-- return newList
repeat with unVolume in newList
try
do shell script "diskutil mount " & unVolume
end try
end repeat
***************

Le script #2 permet de démonter tous les volumes démontables (donc pas les volumes utilisés pour une
raison ou une autre).
Script #2
***************
set text item delimiters to ""
set liste to (do shell script "diskutil list") as text
set liste to every paragraph of liste as list
set newList to {}
set critere to {"Apple_HFS", "DOS_FAT_32", "Microsoft Basic Data", "Apple_CoreStorage"}
considering case
repeat with unParagraph in liste
repeat with unCritere in critere
if unCritere is in (unParagraph as text) then
copy last word of (unParagraph as text) to the end of newList
end if
end repeat
end repeat
end considering
-- return newList
repeat with unVolume in newList
try
do shell script "diskutil unmount " & unVolume
end try
end repeat
***************

À tester...
--
Michel Vauquois - <http://michelvauquois.fr>
Nouveau : <http://art-doise-4.michelvauquois.free-h.fr>
et <http://art-doise-5.michelvauquois.free-h.fr>

10 réponses

1 2
Avatar
g4fleurot
M.V. après avoir mûrement réfléchi nous suggère :
À tester...

Le script #2 démonte mes disques Time Machine qui sont temporairement au
repos tant qu'ils ne sont pas sollicités par le système.
--
Gérard FLEUROT plus un
Avatar
josephb
Fleuger émit :
Le script #2 démonte mes disques Time Machine qui sont temporairement au
repos tant qu'ils ne sont pas sollicités par le système.

Oui, mais lors de mes tests j'ai pu voir qu'ils remontent tout seuls si
le Système leur cause.
Du moins avec Lion.
--
J. B.
Avatar
mv
Fleuger a attiré mon attention en écrivant :
À tester...

Le script #2 démonte mes disques Time Machine qui sont temporairement au
repos tant qu'ils ne sont pas sollicités par le système.

Normal donc puisque s'ils ne sont pas sollicités par le système, ils ne sont donc pas "occupés" et sont donc réputés comme étant démontables.
Comment s'appellent ces disques ? Ce sera facile de les exclure du démontage généralisé en ajoutant une ligne pour chaque disque à exclure :
**********************
considering case
repeat with unParagraph in liste
repeat with unCritere in critere
if unCritere is in (unParagraph as text) then
copy last word of (unParagraph as text) to the end of newList
end if
end repeat
end repeat
end considering
**********************
deviendra si on veut exclure le disque nom_du_disque (dans le script, il faut garder les guillemets autour du nom) :
**********************
considering case
repeat with unParagraph in liste
repeat with unCritere in critere
if unCritere is in (unParagraph as text) then
if "nom_du_disque" is not in unParagraph then copy last word of (unParagraph as text) to the end of newList
end if
end repeat
end repeat
end considering
**********************
Cordialement.
--
Michel Vauquois - <http://michelvauquois.fr>
Nouveau : <http://art-doise-4.michelvauquois.free-h.fr>
et <http://art-doise-5.michelvauquois.free-h.fr>
Avatar
mv
M.V. a attiré mon attention en écrivant :

Je n'ai pas tenu compte d'une modif à apporter (c'est Joseph-B qui a attiré mon attention dessus :
rajouter un "exit repeat" dès que le script rencontre un des mots-clés dans la liste :
**********************
considering case
repeat with unParagraph in liste
repeat with unCritere in critere
if unCritere is in (unParagraph as text) then
copy last word of (unParagraph as text) to the end of newList
exit repeat <-- ICI
end if
end repeat
end repeat
end considering
**********************
Cordialement.
--
Michel Vauquois - <http://michelvauquois.fr>
Nouveau : <http://art-doise-4.michelvauquois.free-h.fr>
et <http://art-doise-5.michelvauquois.free-h.fr>
Avatar
g4fleurot
M.V. a écrit :
Comment s'appellent ces disques

******
set text item delimiters to ""
set liste to (do shell script "diskutil list") as text
set liste to every paragraph of liste as list
set newList to {}
set critere to {"Apple_HFS", "DOS_FAT_32", "Microsoft Basic Data", "Apple_CoreStorage"}
considering case
repeat with unParagraph in liste
repeat with unCritere in critere
if unCritere is in (unParagraph as text) then
copy last word of (unParagraph as text) to the end of newList
if "DD-2To" is not in unParagraph then copy last word of (unParagraph as text) to the end of newList
if "DD-1To" is not in unParagraph then copy last word of (unParagraph as text) to the end of newList
end if
end repeat
end repeat
end considering
-- return newList
repeat with unVolume in newList
try
do shell script "diskutil unmount " & unVolume
end try
end repeat
********
les deux disques "DD-1To" et "DD-2To" sont démontés
--
Gérard FLEUROT plus un
Avatar
mv
Fleuger a attiré mon attention en écrivant :
les deux disques "DD-1To" et "DD-2To" sont démontés

Alors qu'ils ne devraient pas ?
C'est juste que ton script ne va pas ! Tu as mal placé la ligne qui alimente "newList" !
Celui-ci devrait aller beaucoup mieux :
******
set text item delimiters to ""
set liste to (do shell script "diskutil list") as text
set liste to every paragraph of liste as list
set newList to {}
set critere to {"Apple_HFS", "DOS_FAT_32", "Microsoft Basic Data", "Apple_CoreStorage"}
considering case
repeat with unParagraph in liste
repeat with unCritere in critere
if unCritere is in (unParagraph as text) then
if "DD-2To" is not in unParagraph then
if "DD-1To" is not in unParagraph then copy last word of (unParagraph as text) to the end of newList
end if
end if
end repeat
end repeat
end considering
repeat with unVolume in newList
try
do shell script "diskutil unmount " & unVolume
end try
end repeat
********
Cordialement.
--
Michel Vauquois - <http://michelvauquois.fr>
Nouveau : <http://art-doise-4.michelvauquois.free-h.fr>
et <http://art-doise-5.michelvauquois.free-h.fr>
Avatar
mv
La petite modif de rien du tout que j'ai encore oubliée !
Fleuger a attiré mon attention en écrivant :
les deux disques "DD-1To" et "DD-2To" sont démontés

Alors qu'ils ne devraient pas ?
C'est juste que ton script ne va pas ! Tu as mal placé la ligne qui alimente "newList" !
Celui-ci devrait aller beaucoup mieux :
******
set text item delimiters to ""
set liste to (do shell script "diskutil list") as text
set liste to every paragraph of liste as list
set newList to {}
set critere to {"Apple_HFS", "DOS_FAT_32", "Microsoft Basic Data", "Apple_CoreStorage"}
considering case
repeat with unParagraph in liste
repeat with unCritere in critere
if unCritere is in (unParagraph as text) then
if "DD-2To" is not in unParagraph then
if "DD-1To" is not in unParagraph then copy last word of (unParagraph as text) to the end of newList
end if
exit repeat
end if
end repeat
end repeat
end considering
repeat with unVolume in newList
try
do shell script "diskutil mount " & unVolume
end try
end repeat
********
Cordialement.
--
Michel Vauquois - <http://michelvauquois.fr>
Nouveau : <http://art-doise-4.michelvauquois.free-h.fr>
et <http://art-doise-5.michelvauquois.free-h.fr>
Avatar
g4fleurot
M.V. a écrit ceci :
Alors qu'ils ne devraient pas ?

Oui
C'est juste que ton script ne va pas ! Tu as mal placé la ligne
qui alimente "newList" !

Vu
Celui-ci devrait aller beaucoup mieux :

Oui, ç'est tout bon ;-)
Vous êtes vraiment très forts.
--
Gérard FLEUROT plus un
Avatar
josephb
Bonjour Gérard,
Fleuger émit :
les deux disques "DD-1To" et "DD-2To" sont démontés

essaie ça STP
*******************
set text item delimiters to ""
set liste to (do shell script "diskutil list") as text
set liste to every paragraph of liste as list
set newList to {}
set critere to {"Apple_HFS", "DOS_FAT_32", "Microsoft Basic Data", "Apple_CoreStorage"}
considering case
repeat with unParagraph in liste
if not (unParagraph contains "DD-2To" or unParagraph contains "DD-1To") then
repeat with unCritere in critere
if unCritere is in (unParagraph as text) then
copy last word of (unParagraph as text) to the end of newList
exit repeat
end if
end repeat
end if
end repeat
end considering
repeat with unVolume in newList
try
do shell script "diskutil unmount " & unVolume
end try
end repeat
********************
--
J. B.
Avatar
g4fleurot
Joseph-B a écrit ceci :
essaie ça STP

C'est bon aussi.
Chapeau bas à vous deux.
--
Gérard FLEUROT plus un
1 2