0

私はapplescriptの完全な初心者であり、新しい外付けバックアップHDDを使用する必要がありました。非常にうるさいので、ディスクをマウントし (マウントされていない場合)、バックアップを実行し、バックアップ ディスクを再度取り出す (コード A) スクリプトを書きたいと思いました。ここまでは順調ですね。バックアップの完了後にディスクを取り出すために、プロセスがまだ実行されているかどうかを確認するコードを見つけました (コード B)。バックアップ プロセス (backupd) がまだ実行中の場合は 1 を返し、完了した場合は 0 を返します。
私は今、これらの2つの部分を組み合わせるのに苦労しています。バックアップが開始された後、backupd がまだ実行されているかどうかをコード B でチェックし続け、実行されている場合は次の手順に進み、ディスクを取り出します。

コードAでコードBを実行できないだけでなく、必要なループが少し混乱します。どんな助けでも本当に大歓迎です!! 想像を絶するほどトリッキーだとは思えない平和と静けさを取り戻す手助けをしてくれてありがとう

コード A:

set myVolumeLabel to "Time Machine"

tell application "Finder"
    set diskDev to do shell script "diskutil list | grep \"" & myVolumeLabel & "\" | grep -o > 'disk[0-9]*' "
    if not (disk myVolumeLabel exists) then
        
        do shell script "diskutil mountDisk " & diskDev
        do shell script "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-> helper >/dev/null 2>&1 &"
        
        (* Checking if the backupd process is still running should go here I suppose.*)
    else
        do shell script "diskutil eject /Volumes/'Time Machine' " & diskDev
    end if
    
end tell

コード B

on check_process(marker)
    set the_processes to (do shell script "ps -A")
    return (the_processes contains marker)
end check_process

if check_process("/backupd") then
    set x to "1"
else
    set x to "0"
end if

---display dialog x buttons {"OK"} default button 1   
    

Mac OS X (10.6.8)

4

1 に答える 1