スクリプトの概要
このスクリプトは、Finderで特定のファイル(ここでは 'list.txt')を検索し、その中のファイル名(番号)を読み取り、ユーザーが指定したフォルダからこれらのファイルをデスクトップ上の「抽出」フォルダにコピーします。ファイルが見つからない場合はエラーメッセージを表示します。
使い方
以下の手順に従って、スクリプトを使用することができます:
- スクリプトの準備: まず、上記のスクリプトを(スクリプトエディタ)AppleScriptエディタにコピー&ペーストします。
- ファイルの配置: 'list.txt' をFinderのアクティブなウィンドウに配置してください。このテキストファイルにはコピーしたい画像ファイルの名前がカンマで区切られて記載されている必要があります(例:001,002,003...※拡張子がない場合は.jpgが使われます)
- スクリプトの実行: スクリプトを実行すると、フォルダ選択ダイアログが表示されます。コピー元になるオリジナルファイルが入った参照元フォルダを選択してください。
- 結果の確認: ファイルが正常にコピーされた場合、デスクトップに新しい「抽出」フォルダが作成され、選択したファイルがその中に格納されます。何らかの理由でファイルが見つからなかった場合は、見つからなかったファイル名が表示されます。
property foldername : "抽出"
on run
activate
tell application "Finder"
set fileObject to (files of front window whose name is "list.txt") as alias
set fileObjectPOSIX to fileObject's POSIX path
end tell
set fileNumbers to readfileNumbers(fileObject)
copyFilesToDesktop(fileNumbers)
end run
-- ファイルの内容を読み込む関数
on readfileNumbers(fileObject)
set fileContent to read fileObject as «class utf8»
set AppleScript's text item delimiters to ","
set fileNumbers to text items of fileContent
return fileNumbers
end readfileNumbers
-- ファイルをデスクトップにコピーする関数
on copyFilesToDesktop(fileNumbers)
tell application "Finder"
set targetFolder to (choose folder with prompt "ファイルコピーの抽出元となるフォルダを指定してください") as text
set destinationFolder to (POSIX path of (path to desktop) & foldername) as text
end tell
do shell script "mkdir -p " & quoted form of destinationFolder
set errFiles to {}
repeat with fileNumber in fileNumbers
if length of fileNumber > 0 then
if not (fileNumber ends with ".jpg") then
set fileName to fileNumber & ".jpg"
else
set fileName to fileNumber
end if
set findCommand to "find " & quoted form of (POSIX path of targetFolder) & "*" & " -name " & quoted form of fileName
set foundFiles to paragraphs of (do shell script findCommand)
if (count of foundFiles) > 0 then
repeat with foundFile in foundFiles
set sourceFilePath to foundFile
set destinationFilePath to destinationFolder & "/" & fileName
do shell script "cp " & quoted form of sourceFilePath & " " & quoted form of destinationFilePath
end repeat
else
set end of errFiles to fileName
end if
end if
end repeat
if (count of errFiles) > 0 then
display dialog "次のファイルが見つかりませんでした: " & errFiles
else
if (count of fileNumbers) > 0 then
display dialog "該当番号をすべてデスクトップにコピーしました"
else
display dialog "検索対象の番号がありません"
end if
end if
end copyFilesToDesktop