• ベストアンサー

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

「ディスクイメージを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の初期設定を変えたいのですが、これもやり方がわかりません。 一つのスクリプトを実行するだけで、「検証中」のバーが消えるまで待ったりキャンセルをわざわざクリックしなくてもワンタッチで辞書が使えるようにするにはどうしたらよいでしょうか?

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

  • ベストアンサー
  • coriaka
  • ベストアンサー率72% (126/175)
回答No.4

必要なディスクがマウントするまで待つ方法もあります。 補足にありましたディスク名を使って書いてみました。 -- 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
質問者

お礼

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

その他の回答 (3)

  • syasushi
  • ベストアンサー率27% (226/837)
回答No.3

イメージのマウントに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
質問者

お礼

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

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

a)ファイルの存在確認を行い、存在確認に失敗したら、数秒待ってから存在確認を繰り返す。 b)コマンドhdiutilをdo shell scriptで呼び出して、マウントさせる: do shell script "hdiutil mount /Users/Shared/mozilla-mac-MachO.dmg" hdiutilなら、マウント処理が完了するまで、制御が戻ってきません。 ただ、.imgも扱えるかどうかは不明ですが。

参考URL:
http://developer.apple.com/documentation/Darwin/Reference/ManPages/man1/hdiutil.1.html
MORGEN
質問者

お礼

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

  • chack
  • ベストアンサー率50% (9/18)
回答No.1

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

MORGEN
質問者

お礼

またの機会によろしくお願いします。

MORGEN
質問者

補足

早々のお返事をどうもありがとうございます! まず、 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ソフトを立ち上げています。 どうでしょう? どうにかなりそうでしょうか?

関連するQ&A