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

AppleScriptで「選択」して「選択したものをリネーム」

AppleScriptで、あるフォルダ内のファイルを解凍してFTPでサーバーにアップするという処理をさせようとしています。 tell application "Finder" activate select folder "ChangeData" of startup disk open selection select document file "DATA20091014.lzh" of folder "CangeData" of startup disk end tell ここまでは「コンパイル」を実行しても正しくプログラムに出来たのですが、ご覧の通り、希望の動作をさせるには記述が足りません。 文法がめちゃくちゃなのを承知で敢えて書きますと、 tell application "Finder" activate select folder "CaspaData" of startup disk select all contents of selection ←選択したフォフダの中身を全て選択する(記述法不明) rename selection to "today.lzh" ←選択したファイルの名前を「today.lzh」に書き替える(記述法不明) select all contents of selection ←選択したフォフダの中身を全て選択する open selection ←ここでファイルが解凍されます select document file "today.lzh" of folder "CaspaData" of startup disk delete selection ←選択したファイルを捨てる select all contents of selection ←選択したフォフダの中身を全て選択する(記述法不明) rename selection to "Data.csv" ←選択したファイルの名前を「Data.csv」に書き替える(記述法不明) end tell "CaspaData"というフォルダの中にはメールソフトが自動的に保存したファイル1個だけが入っているので、こうすることによって、 1. フォルダ内のファイルが何と言う名前でも"today.lzh"に書き替える 2. today.lzhを解凍する 3. today.lzhをゴミ箱に捨てる というプロセスを自動処理し、フォルダ内にはメールソフトが保存したアーカイブの解凍後のファイルだけが残るようにしたいという訳です。 最終的には、このリネームしたCSVをNetFinderというFTPソフト(スクリプト対応ソフトです)で希望の場所にアップロードしたい訳なのですが…。 http://force4u.cocolog-nifty.com/skywalker/2008/01/applescript_ae09.html こんなところを見ると、そこに存在するファイルの名前が何であっても目的の名前に変えることの出来るスクリプトも組めるんだなということは解るんですが、私には知識がなくて内容が理解できないので、スマートではないことは承知の上で「1つしかファイルがないのに"全て選択"で選択してリネーム」という手段をとろうとしています。 ここで、上に「記述法不明」と書いた部分は、Applescriptではどう書けばいいのでしょうか?

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数1007
  • ありがとう数3

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

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

いくら AppleScript が取っつきやすいとは言っても、ある程度勉強しないと無理ですよ。 http://www.tonbi.jp/AppleScript/intro/basic.html このあたりを参考に、基礎を勉強してください。そうすれば書かれているリンク先の内容も理解できるでしょう。 それまでは Automator でガマンしておきましょう。フォルダ内のファイルのリネームくらいなら Automator で処理できるはずです。 これだけでは何なので、「フォルダ内の全ファイルをリネーム」という部分だけ。 全ファイルをワンアクションでリネームする事はできません。フォルダ内の全アイテムについて一つずつリネーム処理を繰り返すという方法を取ります。具体例は以下。この場合は、単に全ファイルの末尾に .lzh を付けるだけです。 set theFiles to every file of theFolder repeat with aFile in theFiles set name of aFile to ((name of aFile) as string) & ".lzh" end repeat

共感・感謝の気持ちを伝えよう!

質問者からのお礼

リネーム方法のサンプル、どうもありがとうございました。 もちろん、こういったものは勉強しながらでないと使えないので、こうして質問させて頂いては知識を取り込んで組み合わせて応用の幅を広げています。 ご提示頂いた基本編のページは何度か見たことがありましたが、こういうステップ・バイ・ステップのものでは私は結局理解できず、色々サンプルを押してて頂いては自分なりに改造して行くうちに逆に基礎に辿り着くというのがいつものパターンで、JavascriptもPerlも、そうやって徐々に自力で組めるようになりました。 今回は、教えて頂いたサンプルから、下のように組んで実用に成功しました。 「専門家」の方からすればお笑いぐさのスクリプトだと思いますが…。 tell application "Finder" activate set theFiles to every file of folder "ChangeData" of startup disk repeat with aFile in theFiles set name of aFile to "aaaa.lzh" end repeat open document file "aaaa.lzh" of folder "ChangeData" of startup disk repeat delay 5 exit repeat end repeat delete document file "aaaa.lzh" of folder "ChangeData" of startup disk end tell tell application "Finder" select folder "ChangeData" of startup disk open selection set theFiles to every file of folder "ChangeData" of startup disk repeat with aFile in theFiles set name of aFile to "test.csv" end repeat end tell tell application "URL Access Scripting" upload file "Macintosh HD:ChangeData:test.csv" to "ftp://aaaa:pass@aaaa.jp//www/aaaa/cgi-bin/" replacing yes without binhexing quit end tell tell application "Finder" activate repeat delay 5 exit repeat end repeat set theFiles to every file of folder "ChangeData" of startup disk repeat with aFile in theFiles delete aFile end repeat end tell

関連するQ&A

  • AppleScriptで特定のファイルを特定のアプリで開く

    現在FileMakerとAppleScriptを組み合わせて開発を行っています。 下記のような作業をしたくコーディングをしたのですが、うまく動作させる事ができません。何が原因なのでしょうか? 作業:特定のフォルダに入っているパワーポイントのファイルを特定のバージョンのパワーポイントで開きたい。 環境:MacOS X 10.5.6、PowerPC G4、FileMaker 9 コード: tell application "Finder" repeat with i in folder "Data" of startup disk if file type of i = "SLD8" then i select open selection using file "Microsoft PowerPoint" of folder "Microsoft Office 2004" of folder "Applications" of startup disk end repeat end tell 問題1:ファイルを開く事はできるが「Macintosh HD:Data:test.pptはUser1が編集中です。読取専用で開きますか?」とエラーが表示され、延々とループしてしまう。 問題2:そもそもPPTのファイルを開いてくれない時がある。 PPTファイルのフルパスを指定すれば、問題なく開く事ができるのですが、 業務都合上色々なファイル名のPPTが入ってくるため、対象フォルダの中をFileTypeで探してオープンしています。 そもそものコードの部分から間違っているなどご指摘頂けると幸いです。 何か解決方法をお持ちの方、お力をお貸し下さい。 よろしくお願い致します。

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

    • ベストアンサー
    • Mac
  • AppleScript、ファイルの移動について

    初心者です、以下の文で、デスクトップにある test.txt というファイルをアプリケーションフォルダーにある test というフォルダーに移動させたいのですが、エラーが出ます。 ------------------------------ tell application "Finder" set tgtFile to file "test.txt" of desktop move tgFile to folder "test" of applications folder with replacing end tell ------------------------------ エラー文 error "folder \"test\" of applications folder を取り出すことはできません。" number -1728 from «class cfol» "test" of At Ease applications folder ------------------------------ しっかりアプリケーションフォルダーにtestというファイルはあります。 改善法を教えてください<(_ _)>

    • ベストアンサー
    • Mac
  • アップルスクリプトで、新しいウインドウを開きたい。

    アップルスクリプトで、IEを全面に持ってくるところ※までは出来たのですが、IEのファイルメニューから、「新しいウインドウを開く」を実行させたいときには、どの様に記述すればよろしいか教えてください。 ※ tell application "Internet Explorer" Activate end tell 最終目的は、ファイルメーカープロのスクリプトで、「urlを開く」を利用したいのですが、一度に、複数のページを表示させたいと考えています。

    • ベストアンサー
    • Mac
  • AppleScriptでpkgファイルの実行方法

    AppleScriptであるpkgファイルを実行させてインストール画面を表示させたいのですがどのように記述すればよいでしょうか。 tell application "Install" open "file.pkg" end tell ではできませんでした。 宜しくお願い致します。

    • ベストアンサー
    • Mac
  • AppleScriptからFileMaker起動

    AppleScriptからFileMaker Pro12を起動して、共有ファイルを開きたいのですが、以下の記述ではタイムアウトエラーとなってしまいます。 FileMakerは起動していますが、起動時にファイルを選択するダイアログが開いた状態になっていることが原因かな?と思うのですが、どのようにしたらよいでしょうか? ---------------------------------------- tell application "FileMaker Pro Advanced" activate getURL "fmp://ユーザー名:パスワード@サーバーのIPアドレス/共有ファイル名" end tell ---------------------------------------- サーバー:Mac mini Server OS X10.8 +  FileMaker Server12 アドバイスを宜しくお願い致します。

    • ベストアンサー
    • Mac
  • applescriptでduplicateした後に

    applescriptでのファイル操作に関して質問させて頂きます。 宜しくお願いいたします。 現在、macOS10.8.5で、applescriptのコードを書いております。 tell application "Finder" set mynewfile to (duplicate myfile to toDir) のように、ファイルをコピーした後に、コピー先のファイルを別のアプリケーション(今回はphotoshop CS6)で開いて、処理を継続したいと考えています。 duplicateの戻り値は、class:document fileで、mynewfileから /Users/macbook/Desktop/toDir/myfile.jpg のようなUNIX形式のパステキストを作って渡せば良いと考えたのですが、どうしても取得できません。 ダメもとで、 tell application "Adobe photoshop CS6" open mynewfile などとしても、エラーで動きませんが、 単純に、 open mynewfile とすると、拡張子に対応したデフォルトのアプリケーションでファイルが開きます。 そこで以下2つ質問をさせて頂きます。 質問1) コピーしたファイルを指定したアプリケーションで開くためには、どのような処理を記述すれば良いのでしょうか? 質問2) duplicateの戻り値から、UNIX形式のパステキストを得るためには、どのような処理が適切でしょうか? applescriptに詳しい方、どうかご教示をお願いいたします。

    • ベストアンサー
    • Mac
  • AppleScriptで教えて欲しいです。

    現在、clipboardと同じ名前のフォルダー1つ(例:ABC123)のみ処理する。 →これを、clipboardの名前を含むフォルダー1つ(例:ABC123.4)のみ処理する。 に変更したいです。 ちなみにclipboardの名前を含むフォルダーは、1つしか存在しません。 申し訳ありませんが、実際の業務で使用している下記のスクリプト(無駄な部分も多少あるかと思いますが)を出来る限り変更を加えず、可能でしょうか? 無理であれば、大幅変更も可能ですので、ご教授の程、宜しくお願い致します。 global Num global fp set Num to the clipboard tell application "Finder" my shikyuseihan2data() --支給製版2課データ try duplicate fp to folder "data" of disk "HD" move fp to folder "jus:5)製版行き: 2課使用済" end try end tell --アクセス権 tell application "Terminal" activate do script with command "chmod -R 775 /Volumes/HD/data" quit end tell --支給製版2課のデータ on shikyuseihan2data() tell application "Finder" set x to name of every disk if "jus" is in x then else mount volume "afp://10.1.30.10/jus/" end if try set fp to "jus:5)製版行き:" & Num & ":" as text set fp to fp as alias end try end tell end shikyuseihan2data

    • ベストアンサー
    • Mac
  • Applescript iTunes アートワーク

    予めGoogle画像検索結果から任意の画像(jpeg画像が前提)をクリップボードに格納後、iTunes上にて、選択した曲のアートワークに、クリップボード上の画像を貼付けることをApplescriptで実現したいと考えております。 現在(iTunes 11)では、いちいち「情報をみる」>「アートワーク」>「ペースト&保存」というステップが面倒なため、Applescriptを使って解決すべくチャレンジしています。 以下のように考えたのですが、エラーとなってしまいます。 張付け先の曲ですが、iTunes上で選択した(ハイライトさせた?)複数楽曲に対して行えると良いのですが、以下では「current track」としています。 最終的にはAutomaterを使ってサービス登録後に、ショートカットを割り当てます(この方法は、なんとかなりそうです)。 どなたかご指導頂けないでしょうか? tell application "iTunes" set (data of artwork 1 of current track) to the clipboard as picture end tell

    • 締切済み
    • Mac
  • AppleScriptでpathを取得

    クリックしたファイルの絶対パスをクリップボードに保存する AppleScript(以下に記載)があるのですが、これでは クリップボードの中身が '/Users/ABC/Desktop/tmp1.jpg' '/Users/ABC/Desktop/tmp2.jpg' となります。 クオーテーション「 ' 」なしで、クリップボードに保存したいのですが どのようにすれば良いのでしょうか。 rest of characters of などを使ってどうにか組もうとしたのですが 初心者にはできませんでした。 どなたか、よろしくお願いします。 tell application "Finder" set theItems to "__OBJ_PATH__" set theResult to "" set old_delims to AppleScript's text item delimiters set AppleScript's text item delimiters to ":" set max to count of (every text item of theItems) repeat with num from 1 to max set theResult to theResult & quoted form of (text item num of theItems) if max > 1 and num < max then set theResult to "theResult" & " " end if end repeat set AppleScript's text item delimiters to old_delims set the clipboard to theResult end tell