- ベストアンサー
Automatorでファイルの移動とコピー
- Automatorのフォルダアクションを使ってファイルを2ヶ所のフォルダにコピーしたい
- 質問者は既に作成したワークフローに問題があり、移動先のフォルダBのパスが表示されない
- 質問者はスクリプトが正常に動作するか疑問を抱いており、MacやAutomatorの知識についても不慣れである
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 shellスクリプトで書くと cp folderA/* folderC/ yymmdd=$(date +'%y-%m-%d') today_folder=$(find folderB -name ${yymmdd} -print) mv folderA/* ${today_folder} こんな感じかな。 ループやifがなければただ命令をならべるだけです。 私はこの程度しか書けませんが、これ以上複雑になるとrubyを使っています。 AppleScriptはshellからはosascript命令で実行できますので、簡単なものはshellで書いて、複雑なものはrubyで書いて、shell経由でosascriptでAppleScriptを使う方法をとっています。
その他の回答 (1)
- ki073
- ベストアンサー率77% (491/634)
書いてあるスクリプトを完全には理解していませんが、do scriptを多用していますので、AppleScriptで書くのではなく、shellスクリプトで書く方がずっと楽だと思います。Automatorに「シェルスクリプトを実行」がありますのでそれを利用します。 RubyやPythonも使えますので、AppleScriptよりずっと簡単だと思います。 原因はinputが移動前のファイルを指しているのでうまくいかないのだと思いますが、書きましたようにshellスクリプトの方が理解しやすいと思います。 最初はターミナルで実行しながら、動作を確認すれば良いと思います。 それとOSのバージョンは書いておきましょう。バージョンによって微妙に動作が変わることがありますので。
お礼
ki073様 ありがとうございます。 なんとなくAppleScriptの方がとっつきやすく、shellスクリプトは難しそうなイメージでとっつきにくかったんです。。 shellスクリプトについて調べてみます。 ありがとうございました。
お礼
ki073様 お礼が遅くなりすみませんでした。 教えていただいたスクリプトを自分の環境に当てはめて、できました!! フォルダ名に空白スペースが入っていたのでうんうん悩みましたが、できました!! すごく嬉しいです。 $ とか % とか {} とか記号が多くて苦手意識があったのですが、ki073様のおかげでファイル名にも日付と時間を付けてみようとか、移動とコピーに失敗した時にはメッセージを出したい!などと夢が膨らみ、こんな時間になってしまいました。 AppleScriptの方も解決しました。 「変数名の取得」と input のデータをわざわざ別の変数に格納したり余計なことをしていたことが原因で移動後のファイルパスの引き渡しができなかったのかな?と想像しています。 当初のコピーと移動に関してはおかげ様で解決しましたので、締め切らせていただきます。 ki073様の「シェルスクリプトの方が理解がしやすい」とのお言葉の意味がわかって本当に嬉しいです。 また躓いたときはこちらで相談させてください。 ありがとうございました。