電子書籍の厳選無料作品が豊富!

Mac OS 10.6.8を使用しています。
Automatorの使い方がいまいちわからないので、質問致します。

         フォルダX
  |    |      |    |
フォルダ1 フォルダ2 フォルダ3 フォルダ4
  |     |     |    |
001.jpg  000.jpg  夏001.jpg  01.jpg
002.jpg  001.jpg  夏002.jpg  02.jpg
  :     :     :    :

上のように「フォルダX」の中に画像が入ったフォルダ(名前順に並べてある)が複数あるとします。
この4つのフォルダのそれぞれの1ページ目の画像だけをコピーして、別に用意した「フォルダY」に(001 002 003と番号をふって)ペーストしたいのです。

フォルダY
  |
001.jpg(フォルダ1の001.jpg)
002.jpg(フォルダ2の000.jpg)
003.jpg(フォルダ3の夏001.jpg)
004.jpg(フォルダ4の01.jpg)

このようにそれぞれのフォルダの一枚目の画像をサムネイルのようにまとめたいのです。
しかしMacのAutomatorのワークフロー?の構築が、試行錯誤はしたのですが、どうも上手くいきませんでした。
画像フォルダが大量にあり、大変困っています。
そこで皆さんの知恵を借りたく思い質問しました。
解凍お願いします。

A 回答 (5件)

No.4のスクリプト修正


ファイル名やフォルダ名に空白があったときに誤動作することを忘れていました。
下記に変更してください。最後の行が微妙に変わっています。



require 'jcode'
$KCODE='u'

str=gets(nil).split(/[\r\n]+/)
dist="~/copy_files"
str.each_with_index{|s, i| system "cp -n '#{s}' #{dist}/#{'%03d' % (i+1)}.jpg"}
    • good
    • 0
この回答へのお礼

本当にありがとうございます!!
これでかなりの時間が削減できます!!!
本当に感謝です!!

こんなに感謝してからで悪いのですが...

.jpgが.JPGになっていた場合、読み込んでくれません。
これはリネームソフトを使うので、たいした事ではないのですが。

「夏休み」
「夏休み (2012)」

という二つのフォルダがあった場合、一つ目のワークフローでテキストにするときに
「夏休み (2012)」の方が一番下になってしまいます。
(「夏休み (2012)」フォルダは、名前順にしても一番下ではありません)

これはなんでなのでしょうか?本当に図々しくてすいません!!

しかも、間違えて質問を閉め切ってしまう始末...

もし!本当にもし!上記の質問にご回答して頂けるのなら、メールを下さい。
本当にすいません!
でも、この問題がある状態でも大変助かっています!!本当にありがとうございます!!

お礼日時:2012/03/29 20:40

スクリプトその2です。

No3でファイルができてから実行してください。

1) 自分の名前のついたフォルダ(Home)の直下にcopy_filesというフォルダを作成。ここにコピーされます。

2) Automatorで
「テキストエディット書類の内容を取得」
「シェルスクリプトを実行」
をならべ
「シェルスクリプトを実行」は
シェル「/usr/bin/ruby」入力の引き渡し方法「stdinへ」
スクリプトを入れる所を消して、下記のスクリプトに変更

3)No.3で作成したファイルのリストをテキストエディタで開いて、他のテキストエディタのウインドウがあれば閉じておいてください。(テキストエディタの一番上のウインドウが対象のようですが、誤動作を防止するために)

(ファイルは書き換えないようにしていますが、上記を確認後)
4) Automatorを実行

#スクリプト
require 'jcode'
$KCODE='u'

str=gets(nil).split(/[\r\n]+/)
dist="~/copy_files"
str.each_with_index{|s, i| system "cp -n #{s} #{dist}/#{'%03d' % (i+1)}.jpg"}
    • good
    • 0

AppleScriptのものが結構不安定でしたので、急遽作り直しました。


プログラムを2つに分けてあり最初の方です。コピーするファイルのリストを作るものです。
ファイルの絶対パスが書き出されます。その順番で連番をつけますので、テキストエディタ上で順番を入れ替えてることができます。
実行の仕方
1) ターミナルを使えるのでしたら、下記のスクリプトをprogram1.rbで保存して
ruby program1.rb フォルダXのパス >出力ファイル.txt
でできあがります。

2) Automatorを使う方法
Automatorでワークフローを作成
「Finder項目の選択を求める」
「シェルスクリプトを実行」
「新規テキストエディット書類」
の3つを順番にならべ、
「Finder項目の選択を求める」をタイプを「フォルダ」に変更
「シェルスクリプトを実行」は
シェル「/usr/bin/ruby」入力の引き渡し方法「引数として」に変更
スクリプトを入れる所を消して、下記のスクリプトに変更
「実行」してフォルダXを選択

テキストエディタが開いて、ファイルのリストができあがります。
順番はお気に入りのように並び替えてください。
ファイルは「何たら0023.jpg」のようになっているもので、番号の一番若いものを探しています。
フォルダは変更日時順に並べるようにしています。
テキストエディタで並び替えたらそれを保存しておいてください。

もう少し便利にしてほしいところありましたら書き込んでください。

その2は後でアップします。ここで作成したリストをもとに、実際にコピーと連番をつけるソフトです。


#スクリプト
require 'jcode'
$KCODE='u'

Dir.chdir(ARGV[0])
dirs=Dir.glob("*").select{|f| FileTest.directory?(f)}
files=dirs.collect{|dir| Dir.glob(dir+"/*").select{|f| f[/\d.jpg$/]}}.reject{|dir| dir.empty?}
files=files.collect{|fs| fs.sort_by{|f| f[/(\d+).jpg$/].to_i}[0]}
files=files.sort_by{|f| File.ctime(File.dirname(f))}
files.each{|f| puts File.expand_path(f)}
    • good
    • 0

No.1のお礼欄について



改造はこちらでやりますので、1日程度お待ちください。
それとフォルダ1、フォルダ2、フォルダ3とありますが、実際には番号がついていますか?
画像1、山3、海6、夏休み20のような感じで(番号は飛んでいても良い)、数字を含んでいてそれにより並び替えることができるなら、もう少し楽になるのですが。
あるいはフォルダを作成した日付の順で良いのならそれで連番の順番の決めることができますが。
    • good
    • 0
この回答へのお礼

ありがとうございます!!!
図々しいようで本当にすいませんが、必ず数字が入っている訳ではないですね。
フォルダ1、2、3というのは名前順です。でも、リネームソフトを使って、フォルダ名の頭に数字をふっていけば大丈夫ですね。
しかし、数字をふった場合、フォルダ名が(例)「夏休み0820」から「003夏休み0820」などになったりして数字が二つ存在して面倒くさい事になったりしませんか?
ちなみに作成日はバラバラで、名前順とは同じになりませんm(__)m
わざわざ色々していただいて本当に感謝しています。

お礼日時:2012/03/28 08:21

Automatorにあるライブラリだけでは無理だと思います。


フォルダの中の番号の一番小さいのを選んだり、連番をつけたりするのでちょっと高度です。

RubyやPythonで作るのが簡単なような気がします。

以前作ったAppleScriptですが、アプロケーションにドロップすると特定のフォルダにコピーして連番をつけてくれるのがあります。簡単なスクリプトです。若干改造する必要はあるのですが、こんなものでもよければスクリプトを掲示しますが。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
AppleScriptですか...よく知らないのですが、連番を付けてくれるだけでもとても助かります!欲しいです!!
自分は全くプログラミングが出来ないのですが、作れますかね?(汗)

お礼日時:2012/03/28 06:27

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