プロが教える店舗&オフィスのセキュリティ対策術

環境はiBOOK G4 OS10.4.9です。
PagesenderというFAX機能のアプリケーションを
使用しているのですが、FAXを受信するたびに
特定のフォルダ内にファイルが作成されます。
ある時、何気にそのフォルダを開いてみたら
数千というファイルが出来ており、びっくりしました。
そのほとんどのファイルが必要ない物でしたのでゴミ箱に
入れたのですが、数が数だけにその作業も結構時間がかかり、
「特定フォルダ内のファイルを作成日より数ヶ月後に自動的に
ゴミ箱に移動できないか」と思いました。
前から気になっていたapple scriptで上記の作業はできるのでしょうか。できるようでしたら、この機会にapple scriptを勉強したいので
参考になるサイトがあればお教えください。よろしくお願いいたします。

A 回答 (11件中1~10件)

こんなのはどうですか?



set File_List to {}
set Target_Folder to choose folder
set Seconds_since_creation to 86400
tell application "Finder"
set File_List to entire contents of Target_Folder
repeat with i from 1 to count of File_List
if ((current date) - (creation date of item i of File_List)) > Seconds_since_creation then
delete item i of File_List
end if
end repeat
end tell

実行するとフォルダ選択のダイアログが出て、そのフォルダの中にある作成後24時間以上経過したファイルが全てゴミ箱行きになります。経過時間はSeconds_since_creation に秒数で指定してください。フォルダ名をあらかじめ特定したスクリプトを起動項目に入れておけば、起動する度にフォルダが掃除されます。cron を使って定期実行することも可能です。

ちなみに Hazel という PreferencePane を使っても条件にマッチするファイルを定期的にゴミ箱に移動したりできます。
http://www.noodlesoft.com/hazel.php
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
全くの素人なのでみても分からないのですが、
使えそうな気がします。
多分フォルダ名を記入するのだと思いますが、
どこに追記するのでしょうか。
またcron を使って定期実行も興味があります。
お時間があれば引き続きよろしくお願いいたします。

お礼日時:2008/04/11 21:51

まず、以下の説明はAppleScriptではありません。

ターミナルを使ったシェルスクリプトの説明に近い物です。
また、作成日と変更日が違っていて、どうしても作成日のファイルが対象ならば、以下の説明は無駄です。

find /Library/Logs/Console/501/ -mtime +4 -delete

このコマンドは変更日が4日以上前のコンソールログを削除します。

ですので「/Library/Logs/Console/501/」の部分をPagesenderがファイルを作るフォルダに変更し、-mtime +4の「4」を24時間単位で希望の整数にすることで、指定したフォルダ内にある変更日が一定期日より前のファイルが削除できます。

アプリケーション->ユーティリティ->ターミナルを開いて
1.cd /etc/とタイプします。
2.sudo nano daily.localとタイプします。
最初にsudoコマンドを使用する場合は、3行か4行の警告が表示され、その下に「Password:」と表示されます。この「Password:」に続けてpekochanno1さんのログインパスワードをタイプします。
3.開いた画面に上記のfindの例をコピー&ペーストしてから、左右の矢印キーで移動し、「/Library/Logs/Console/501/」の部分をPagesenderがファイルを作るフォルダに変更(UNIX形式で記述)し、-mtime +4の「4」を24時間単位で希望の整数にします。
4.コントロールキー+oキー(アルファベットのオー)を押し、コントロールキー+x(アルファベットのエックス)を押します。
5.これで「/etc/」というフォルダに「daily.local」というファイルができているはずです。「ls -l /etc/daily.local」とタイプすると、ファイルができているかどうかが確認できます。

以上で、Mac OS Xが一日に一回行う(はずの)メンテナンススクリプトの実行とともに、Pagesenderがファイルを作るフォルダの中にある、変更日が一定期間より前のファイルは削除されます。
ちなみに、「(はずの)」と書いたのは、状況によってはメンテナンススクリプトが一日に一回ではないタイミングに行われる場合があるという意味です。

cronを使った定期実行はMac OS X Tiger(10.4.x)以降、Launchdと呼ばれるものに置き換えられました。cronタブの編集等をしなくても、上記だけで定期実行ができるようになっています。
    • good
    • 0

なるほど。

それもそうですね。

> この「2ヶ月」とか「2週間」を変数や計算式で指定できたら便利なのですが。
> そんな機能を拡張するPlug-inなどがあっても良さそう。

については、
http://web.mac.com/johancarlsson/Site/Actions.html (スマートフォルダの内容を取得するアクション)
を使えば可能です。
スマートフォルダならば、特定フォルダの中の任意の日数、週数、月数、年数以内に作成されたファイルを選び出すことができます。でもやはり任意の日数「以前」に作成されたものだけ集めるのはできないんですよね。
    • good
    • 0

「回答者同士のやりとり」になりそうですが・・・


>検索条件として「作成日」が指定の期日「より前」にすれば
は指定の期日が固定されるので書き換えないといけないような気がします。

フォルダの中の、作成日が2ヶ月以内のファイルを別のフォルダに退避させて
元フォルダの中身をゴミ箱に入れ、退避させていたファイルを戻す。
しか無さそうに思います。

この「2ヶ月」とか「2週間」を変数や計算式で指定できたら便利なのですが。
そんな機能を拡張するPlug-inなどがあっても良さそう。

また、実際にアプリにしてログイン項目に入れてみましたが、起動中にイライラ
する人には向いていないですね。
なお、予めお断りしておきますが、私はAuotmatorは5回くらいしか使ったこと無いです(;_;)
    • good
    • 0

OS 10.5.2 ではエラーが出て実行できなかったのですが、別の OS 10.4.11 マシンで試したところ「Finder 項目を検索」→「ゴミ箱に入れる」のワークフローで Automator を使った自動化が可能でした。

ということで、OS 10.4.9 でも可能かもしれません。

「Finder 項目の検索」で対象フォルダを指定し、検索条件として「作成日」が指定の期日「より前」にすれば、お望みのことができると思います。なぜか OS 10.5.2 の Automator では日付「以前」「以後」の設定だとエラーが出ます。「2ヶ月以内」とか「2週間以内」などなら実行が可能なのですが。
    • good
    • 0

2ヶ月以前ならAuotmatorだけでもできそう。

    • good
    • 0

「Auotmator だけではできない」というのは質問者さんの「Automatorで細かな設定ができるのでしょうか。

」という補足質問にたいする直接の回答だと思いますが。質問者さんがみすみす無駄な試行錯誤をするのを見逃すわけにもいきませんから。

> 逃げを打つのなら、AppleScriptを書いて、それをAutomatorのアクションに取り込むほうに、走りますよ。

それが無意味なことはお分かりですよね。
    • good
    • 0

> というか、時間があっても Automator だけでは不可能ですよね。



OKWaveの「禁止事項」より抜粋:
■回答ではない回答
質問と関係ない内容や雑談、便乗した質問、回答者同士のやりとりや議論、個人的なメッセージなど、質問に対する回答として成立しない内容を回答欄に投稿することは、ご遠慮ください。

ということで、回答に対する批判、評価は、ご遠慮ください。

世の中、なにごとも妥協は避けて通れません。100%希望どおりのことを実現するために、長時間の学習を行うのか、そこそこで妥協して、短時間で実現するかの選択は、各自の判断にまかせるべきです。
すくなくとも、返答に窮して、逃げを打ったような印象を与える表現は、いただけません。
逃げを打つのなら、AppleScriptを書いて、それをAutomatorのアクションに取り込むほうに、走りますよ。
    • good
    • 0

> そういう時間はありません。



というか、時間があっても Automator だけでは不可能ですよね。そもそものリクエストが「特定フォルダ内のファイルを作成日より数ヶ月後に自動的に
ゴミ箱に移動できないか」というものですから、それに合う解決法を示された方がいいと思いますよ。

> 多分フォルダ名を記入するのだと思いますが、どこに追記するのでしょうか。

choose folder の代わりに alias "Macintosh HD:Users:user_name:Faxes:" などとしてください。"" の中は対象フォルダのフルパス名です。フォルダ名の区切りと最後に : を付けるのと最初に alias を付ける点に気をつけてください。

> またcron を使って定期実行も興味があります。

これはスクリプトを実行用アプリケーションとしてセーブしておき、ターミナルで crontab というコマンドを使って実行条件を設定します。これは UNIX の話になるので、ここで一から説明するのは無理があります。ある程度 AppleScript や UINX コマンドを試してみて、基本が理解できた上でまだ不明な点があれば改めて質問してください。
    • good
    • 0

> お時間がありましたら引き続きよろしくお願いいたします。



そういう時間はありません。
AppleScriptをこれから勉強したいという意欲があるかたが、それでは困ります。一を聞いて十を知る姿勢で、臨んでいただきたいと思います。
試行錯誤で、いろいろ応用にチャレンジしてはいかがですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!