• ベストアンサー
  • 困ってます

Apple Scriptで、1つの作業完了後に次の作業に進ませるには?

  • 質問No.1012688
  • 閲覧数1021
  • ありがとう数4
  • 回答数4

お礼率 100% (442/442)

「ディスクイメージを3つマウントした後にEPWING閲覧ソフトを立ち上げる」という
スクリプトをアップルスクリプトで組んでOS9で使っていました。

tell application "Finder"
activate
open {file "FOKS.img" of folder "Applications (Mac OS 9)" of startup disk, file "Wa-Doku.img" of folder "Applications (Mac OS 9)" of startup disk}
open file "CeDar1.6" of folder "CeDar1.6 folder" of folder "Applications (Mac OS 9)" of startup disk
end tell

というスクリプトなのですが、これをOSX(10.3)用に改造して使おうとしたところ、ディスクイメージのマウント時に「検証中」というバーが出るようになったので、マウントが終わる前に次の動作に進んでしまって「ディスクが見つかりません」というエラーになってしまうためにスクリプトを2つに分けて2段階で起動しなければならなくなってしまいました。
また、OSXではマウントしたディスクイメージのコンテナウインドウも開いてしまうのでこれを閉じてやる命令も加えなければならず、マウントするところまでと、コンテナウインドウを閉じてCeDarを立ち上げる過程との2つのスクリプトを順番に実行しなければなりません。

こんな面倒な事をせずに、イメージのマウントを待って次の作業に移るような1つのスクリプトで全作業が終わるようにしたいのですが不可能でしょうか?
まず、ディスクイメージマウント時の「検証」をスキップさせるようにimage mounterの初期設定を変えたいのですが、これもやり方がわかりません。

一つのスクリプトを実行するだけで、「検証中」のバーが消えるまで待ったりキャンセルをわざわざクリックしなくてもワンタッチで辞書が使えるようにするにはどうしたらよいでしょうか?

質問者が選んだベストアンサー

  • 回答No.4
  • ベストアンサー

ベストアンサー率 72% (126/175)

必要なディスクがマウントするまで待つ方法もあります。
補足にありましたディスク名を使って書いてみました。
--
repeat
if (list disks) contains "KENKYUSHA_CHUJITEN" and (list disks) contains "CRGER" then exit repeat
delay 5 -- 5秒待つ
end repeat
--
これで必要なディスクがマウントされるまでrepeatの中を繰り返し続けます。

ウィンドウが開いたタイミングで反応することもできます。
--
tell application "Finder"
repeat
set |ALLWinName| to name of every Finder window
if |ALLWinName| contains "KENKYUSHA_CHUJITEN" and |ALLWinName| contains "CRGER" then exit repeat
delay 5 -- 5秒待つ
end repeat
beep
end tell
--

補足にあった2つのスクリプトの間にこのどちらかを置けばマウントを待って2つ目のスクリプトに処理が移ります。

誤動作でスクリプトが止まったときはコマンド+ピリオドで停止できます。
お礼コメント
MORGEN

お礼率 100% (442/442)

ご回答、どうもありがとうございました!
教えて頂いた方法、完璧です。
if~then文の作り方、そんな構文が無いかと一応自分でもwebで検索してみたのですが、探し方が下手だったようで有力な情報を拾えなかったのです。
助かりました。
どうもお世話になりました!
投稿日時:2004/09/29 22:41

その他の回答 (全3件)

  • 回答No.3

ベストアンサー率 27% (226/837)

イメージのマウントにDisk Copyを使っているならば、Finder ではなく Disk Copy に命令を送ってあげれば検証中はウェイトになると思われます。
tell application "Disk Copy" to mount file file "FOKS.img" of folder "Applications (Mac OS 9)" of startup disk--without checksum verification (without checksum verification で検証しないようにできます。)
tell application "Finder" to open file "CeDar1.6" of folder "CeDar1.6 folder" of folder "Applications (Mac OS 9)" of startup disk

検証の有無はDisk Copyの初期設定でも設定可能なので、御質問のスクリプトでも検証しないよう設定すれば、御希望の動作が可能かもしれません。
お礼コメント
MORGEN

お礼率 100% (442/442)

ご回答、どうもありがとうございます。
Disk CopyでのマウントはOS9で使用する場合ですので、元々障害はなかったんです。それをOSXで使用するようになったら、Imagemounterという、検索しても引っ掛かってこない奇妙なアプリケーションでマウントするようになっているようなので、初期設定もスクリプティングも方法が全くわからない状態なのです。
状況のご説明が不十分だったようで、申し訳ありませんでした。
投稿日時:2004/09/29 22:37
  • 回答No.2

ベストアンサー率 42% (1231/2878)

a)ファイルの存在確認を行い、存在確認に失敗したら、数秒待ってから存在確認を繰り返す。

b)コマンドhdiutilをdo shell scriptで呼び出して、マウントさせる:
do shell script "hdiutil mount /Users/Shared/mozilla-mac-MachO.dmg"

hdiutilなら、マウント処理が完了するまで、制御が戻ってきません。
ただ、.imgも扱えるかどうかは不明ですが。
お礼コメント
MORGEN

お礼率 100% (442/442)

どうもありがとうございました。
存在確認を繰り返すという方法は「こんなふうにできないのかな」と漠然と考えてはいたものの、どう書いたら良いかわかりませんでした。
具体例をご呈示頂いてとても助かりました。
内容を理解するのに時間がかかると思いますが、良い勉強になりますし、トライしてみます。
どうもありがとうございました!
投稿日時:2004/09/29 22:32
  • 回答No.1

ベストアンサー率 47% (8/17)

こんばんは。
その2つに分けたスクリプトに問題があると言うことはありませんか?
どう言った指示を出しているのでしょう?
補足コメント
MORGEN

お礼率 100% (442/442)

早々のお返事をどうもありがとうございます!

まず、
tell application "Finder"
activate
open {file "KENKYUSHA_CHUJITEN.dmg" of folder "辞書" of disk "Macintosh 80 HD", file "独和.img" of folder "辞書" of disk "Macintosh 80 HD"}
open file "CeDar 2.0b6" of folder "CeDar20b6.f" of folder "アプリケーション" of disk "Macintosh 80 HD"
end tell

でイメージをマウントし、

tell application "Finder"
close container window of disk "KENKYUSHA_CHUJITEN"
close container window of disk "CRGER"
open file "CeDar 2.0b6" of folder "CeDar20b6.f" of folder "アプリケーション" of disk "Macintosh 80 HD"
end tell

でウインドウを閉じてEPWINGソフトを立ち上げています。
どうでしょう? どうにかなりそうでしょうか?
投稿日時:2004/09/22 23:30
お礼コメント
MORGEN

お礼率 100% (442/442)

またの機会によろしくお願いします。
投稿日時:2017/08/23 19:25
関連するQ&A
ページ先頭へ