AppleScript-Verarbeitung von Dateien in Ordnern rekursiv
Ich habe einen root-Ordner, und es sind sub-Ordner. Es ist in der Regel nur eine Ebene, aber es kann tiefer sein. Diese Ordner werden verschiedene Dateien, einschließlich einige .rar
- Dateien. Ich will erstellen Sie eine rekursive Funktion, die durch die Ordner, überprüfen Sie, ob die Datei eine rar-Datei und öffnen/extrahieren. Der code funktioniert auf der ersten Ebene mit problem. Aber der rekursive Aufruf nicht funktioniert und apple Skript error-handling ist furchtbar. Hier ist der code was ich bisher getan habe.
set folderName to "Macintosh HD:Users:Teja:Desktop:Madhu Babu:"
process_folder("", folderName)
on process_folder(root, folderNameToProcess)
set fileExt to {".rar"}
tell application "Finder"
set theItems to every file of folder (root & folderNameToProcess)
repeat with theFile in theItems
copy name of theFile as string to FileName
repeat with ext in fileExt
if FileName ends with ext then
open theFile
delete theFile
end if
end repeat
end repeat
set theFolders to name of folders of folder (root & folderNameToProcess)
repeat with theFolder in theFolders
copy theFolder as string to TheFolderName
display dialog (folderNameToProcess & TheFolderName & ":")
try
process_folder(folderNameToProcess, TheFolderName & ":")
on error errStr number errorNumber
display dialog errStr
end try
end repeat
end tell
end process_folder
InformationsquelleAutor Teja Kantamneni | 2010-10-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, Ihre rekursiven Aufruf
Hinweis: die
my
vor derprocess_folder
nennen. Dies machte es für mich arbeiten.InformationsquelleAutor Lizzan
Das problem ist, dass Sie versuchen zu tun, Rekursion innerhalb eines tell-Blocks. Ihr Skript ist der Versuch zu nennen, einen "process_folder" in "Finder", die natürlich nicht vorhanden ist.
Das Update ist sehr einfach
voranstellen Ihre rekursiven Aufruf process_folder mit "meinem":
Verursachen können, die die Anwendung für einen "process_folder" - handler in Ihrem eigenen Bereich.
InformationsquelleAutor Agnar Renolen
Hier ist die Lösung, die ich bekam, die funktioniert...
InformationsquelleAutor Teja Kantamneni
Versuchen Sie es mit Python. Es gibt wirklich keinen Grund, Zeit zu verschwenden Applescript schreiben, wenn es irgendwelche anderen tools um den job zu erledigen.
Empfehle ich die Script-Debugger zum Debuggen von Applescript, da es viele tools, die für das Verständnis, was eigentlich passiert ist, aber rekursiv Durchlaufen Sie ein Verzeichnis, in Applescript ist sehr langsam, so dass, wenn Sie einen großen Baum wird es bog.
InformationsquelleAutor Brandon