ファイルの解凍は、質問の難しい部分ではありません。難しいのは、どのファイル/フォルダーが解凍されているかわからないため、名前の変更です。したがって、ここでの戦略は、解凍前にフォルダー内のすべてのアイテムのリストを取得し、解凍後にフォルダー内のすべてのアイテムの別のリストを取得してから、2 つのリストを比較することです。最初のリストにない 2 番目のリストにあるアイテムは、解凍されたアイテムです...そのため、それらの名前が zip ファイルと同じでない場合は、名前を変更できます。
提案: AppleScript を学習するには、ここにアクセスして、「初心者向けの AppleScript チュートリアル」という名前のチュートリアルを実行してください。それが私が学んだ方法です。それらは簡単に行うことができ、多くのことを学ぶことができます。幸運を。
-- get the folder containing the zip files
set folderOfZips to (choose folder) as text
tell application "Finder"
-- get the zip files from the chosen folder
set zipFiles to files of folder folderOfZips whose name extension is "zip"
repeat with aZip in zipFiles
-- we use this when renaming the unzipped files
set zipName to text 1 thru -5 of (get name of aZip)
-- get a list of all the items in the folder before unzipping
set origItems to name of items of folder folderOfZips
-- unzip the item
my unzipItem(aZip as text, folderOfZips)
-- get a list of all the items in the folder after unzipping
set nowItems to name of items of folder folderOfZips
-- compare the 2 lists of items, before and after unzipping
repeat with i from 1 to count of nowItems
set thisItem to item i of nowItems
-- if thisItem is not in origItems then it means this is one of the unzipped files, so we rename it
if thisItem is not in origItems then
set thisItemPath to folderOfZips & thisItem
set ext to name extension of item thisItemPath
if ext is "" then
set newname to zipName
else
set newname to zipName & "." & ext
end if
if newname is not thisItem then
try
set name of item thisItemPath to newname
end try
end if
end if
end repeat
move aZip to trash
end repeat
end tell
tell me
activate
display dialog "Finished!" buttons {"OK"} default button 1 with icon note
end tell
on unzipItem(zipPath, destinationFolder)
do shell script "/usr/bin/ditto -xk " & quoted form of POSIX path of zipPath & space & quoted form of POSIX path of destinationFolder
end unzipItem