このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

アップルスクリプト内にsleep処理を入れる事は可能でしょうか?

発言者:penta
( Date Monday, May 14, 2001 10:55:45 )


easyタイマーを使用して、毎朝ログの蓄積されたフォルダを
その日の日付の名前のフォルダにリネームするアップルスクリプト
を作成し使用しています。流れは以下の通りです。
・easyタイマーにより定時刻に以下のスクリプトが動く
  1.ログが溜まったフォルダ、”folder”をcopy
  2.”folderのcopy”をその日の日付にリネーム
Macの動作が遅く、たまに2の動作がエラーになります。
理由は”folderのcopy”が見当たらないというものです。
おそらく”folder”のcopy中に2の動作が動いてしまう様です。
1と2の動作の間に数分sleepみたいな処理をいれる事は可能でしょうか?

Mac使用歴もアップルスクリプトも初心者な者ですが、
ご教授よろしくお願いします。

田中求之 さんからのコメント
( Monday, May 14, 2001 11:18:00 )

実際のスクリプトはどんなものになっていますか?

penta さんからのコメント
( Monday, May 14, 2001 12:03:27 )

失礼しました。スクリプトは以下の通りです。

set mdate to (current date) as string
set myear to (text from character 3 to character 4 of word 1 of mdate)
set mmonth to (word 3 of mdate)
count characters of mmonth
if result < 2 then
   set mmonth to "0" & mmonth
end if
   set mday to (word 5 of mdate)
count characters of mday
if result < 2 then
   set mday to "0" & mday
end if

set FolderName to ("20" & myear & "_" & mmonth & "_" & mday)

tell application "Finder"
   activate
   select folder "daily" of folder "web_report" of folder "marketing"
      of folder "public_html" of folder "pub" of startup disk
   duplicate selection
   select folder "dailyのコピー" of folder "web_report" of
      folder "marketing" of folder "public_html" of 
         folder "pub" of startup disk
   set name of selection to FolderName
end tell

最後のset name する直前にsleep出来ればいいのかな?と
考えています。
よろしくお願いします。

田中求之 さんからのコメント
( Monday, May 14, 2001 12:51:31 )

MacOS 8.5 以降をお使いの場合には、delay というコマンドで、指定した秒数
だけスクリプトの実行を止めることができます。

ところで、スクリプトを以下のように変更してもエラーになりますか?
(Finder で選択してから処理を行う、という手順になっているのを、直接
処理の対象を指定するようにしたものです)



tell application "Finder"
   activate

   duplicate folder "daily" of folder "web_report" of folder "marketing"
      of folder "public_html" of folder "pub" of startup disk

   set name of folder "dailyのコピー" of folder "web_report" of
      folder "marketing" of folder "public_html" of 
         folder "pub" of startup disk to FolderName
end tell

penta さんからのコメント
( Monday, May 14, 2001 13:44:37 )

ご教授頂いた通りにスクリプトを変更し実行してみたところ
修正前よりも処理速度もスムーズな様です。
このまま数日監視をしてみようと思います。
仮にダメな場合はもう一つの”delay”関数を試してみたいと思います。
とにかく大変勉強になりましたし、なにより助かりました。
すばやい解答、本当にありがとうございました。
これからもよろしくお願いします。