Come automatizzare la selezione del disco usb in base alle dimensioni

0

Sto tentando di automatizzare un processo in cui gli insegnanti eliminano il contenuto su memory stick con un nome diverso, quindi rimettono il contenuto giusto (lo stesso ogni volta) e rinominano la memory stick su UDISK.

Voglio aggiungere una formattazione del disco nel processo, e poiché gli studenti continuano a cambiare nome sui bastoncini, non posso usare le etichette nome e se gli insegnanti hanno più di un disco sul loro Mac sono preoccupato se Io uso "disk1" per esempio improvvisamente formattare la partizione sbagliata. Quindi mi chiedo se sia possibile scegliere il disco giusto in base alla dimensione.

Sto usando questo codice: sudo diskutil eraseDisk FAT32 UDISK MBRFormat /dev/disk1

    
posta lobirkeland 06.04.2016 - 14:25
fonte

1 risposta

0

Questo è lo script di una simile procedura di cancellazione / copia di massa che ho creato con l'aiuto di klanomath in questo domanda correlata - Trova disco allegato specifico, non volume, di Applescript di cui è necessario fare riferimento per vedere come viene estratto il nome del dispositivo.

Ho salvato lo script come un servizio di automazione, che ho poi legato a un non banale, in effetti molto difficile da fare per errore Cmd ⌘ Opt ⌥ Shift ⇧ F19 comando chiave in
Preferenze di sistema > Tastiera > Tasti di scelta rapida > Servizi
quindi posso attivare manualmente ogni operazione & non essere a rischio di essere licenziato accidentalmente.

La routine trova il potenziale bersaglio usando il nome del dispositivo del mio lettore di schede USB, riducendo il rischio di formattare almeno il disco sbagliato, sebbene non abbia alcuna misura di sicurezza per la singola scheda SD & agirà su qualsiasi carta nel lettore quando raggiungo la combinazione di tasti.

on run {input, parameters}  
    -- see https://apple.stackexchange.com/questions/207089/find-specific-attached-disk-not-volume-by-applescript/207103#207103 for BSD Disk workings 

    global diskName
    set diskName to "DISK_NAME"
    global BSD_disk
    --using ioreg...
    set BSD_disk to do shell script "ioreg -l | grep -A 10 SD/MMC/MS/MSPRO | awk '/disk/ {gsub(\"\\"\",\"\"); print $NF}'" 

    if BSD_disk is not "" then
        try
            --FAT 16
            do shell script "diskutil eraseDisk \"MS-DOS FAT16\" " & diskName & " MBRFormat " & BSD_disk
        on error
            try
                --FAT 32 [>2GB cards]
                do shell script "diskutil eraseDisk \"MS-DOS\" " & diskName & " MBRFormat " & BSD_disk
            end try
        end try

        delay 2
        tell application "Finder"
            set x to (POSIX file "/Users/[user]/BatchFolder") as alias
            try
                set dest to (POSIX file "/Volumes/" & diskName as string) as alias
            on error return
            end try
            duplicate every item of x to dest
            delay 1         
            if disk diskName exists then
                eject disk diskName
            end if
            beep
        end tell
    else
        return "no SD Card detected"
    end if

    return input
end run
    
risposta data 06.04.2016 - 15:02
fonte

Leggi altre domande sui tag