2016-07-13 8 views
0

私は、名前のリスト(スプレッドシートまたはaという名前のリスト)を使用することができるautomatorワークフローを作成するか、 .csv)を使用して、特定のファイル名(拡張子が異なる)のディレクトリとそのサブディレクトリを検索し、そのイメージをこれらのイメージ用に作成されたフォルダにコピーします。Applescript、Automator - Dir/sub-dirのimgを検索してコピーする

私は必要なものと多少似ているようだが、サブディレクトリ内では検索しないので、実際にはそれを使って画像を探す必要はありません。

大規模な調査の結果、私は必要と思われる2つのスクリプトを見つけましたが、どちらもサブディレクトリを検索していないようです。以下は私が試した2つのスクリプトです。誰かがこれらのサブディレクトリを検索する手助けをすることができれば、本当にありがとう!

スクリプト1:

set thePhotos to paragraphs of (read (choose file with prompt "Choose a text file")) 
set theSourceFolder to (choose folder with prompt "Choose source folder") 
set theDestination to (choose folder with prompt "Choose destination folder") 
set dupeList to {} 
repeat with theName in thePhotos 
    try 
     set end of dupeList to alias ((theSourceFolder as text) & theName) 
    end try 
end repeat 

tell application "Finder" to duplicate dupeList to theDestination with replacing 

set theCount1 to (count of dupeList) as text 
set theCount2 to (count of thePhotos) as text 
display dialog (theCount1 & " of " & theCount2 & " items copied to " & (theDestination as text)) buttons {"OK"} 

スクリプト2

set fileContents to read (choose file with prompt "Choose a comma-delimited text file") 
set theText to result 
set AppleScript's text item delimiters to "," 
set theTextItems to text items of theText 
set AppleScript's text item delimiters to {""} 
theTextItems 
set theSourceFolder to (choose folder with prompt "Choose source folder") as string 
set theDestination to (choose folder with prompt "Choose destination folder") 
repeat with theEPSName in theTextItems 
    tell application "Finder" 
     set theEPSFile to theSourceFolder & theEPSName 
     move file theEPSFile to folder theDestination with replacing 
    end tell 
end repeat 

は、だから私は、.CSVを使用することを選択し、保存し、検索するディレクトリを選択するディレクトリを選択することができます。このスクリプトをサブディレクトリ内で検索するにはどうすればよいですか? Applescriptを理解している人には、必要に応じて機能するように見えますか?

ありがとうございます!これは私の最初のApplescriptの経験であるので、本当に助けていただきありがとうございます。でも、私はそれを学ぶことに興奮しています!

答えて

0

これは、シェルとSpotlight検索を使用する非常に高速なソリューションです。

スクリプトは、検索条件文字列

'kMDItemFSName == picture1.png || kMDItemFSName == picture2.jpg || ...' 

を作成し、すべてのファイルがcpコマンドに見つかったアイテムを渡すことで、検索やコピーを実行します。

名前リストが長すぎてシェルパラメータの最大長を超えている場合は警告が表示されることがあります。

set theNames to paragraphs of (read (choose file with prompt "Choose a text file" of type "txt")) 
set sourceFolder to quoted form of POSIX path of (choose folder with prompt "Choose source folder") 
set destinationFolder to quoted form of POSIX path of (choose folder with prompt "Choose destination folder") 

set nameList to {} 
repeat with aName in theNames 
    set end of nameList to "kMDItemFSName == " & quoted form of aName 
end repeat 
set {TID, text item delimiters} to {text item delimiters, " || "} 
set nameFilter to quoted form of (nameList as text) 
set text item delimiters to TID 
do shell script "mdfind -onlyin " & sourceFolder & " -0 " & nameFilter & " | xargs -0 -J {} cp {} " & destinationFolder 
関連する問題