Ich verwende eine Ordneraktion, um einen "Hot"-Ordner zu erstellen, der die in diesem Ordner abgelegten Dateien sofort in einen bestimmten Sicherungsordner dupliziert.
Dies ist das Skript, das ich als Ordneraktion verwende und es funktioniert gut:
on adding folder items to this_folder after receiving these_items
tell application "Finder" to duplicate these_items to folder
("Macintosh HD:Users:photograper:Desktop:Target:")
end adding folder items to
Aber ich möchte diese Ordneraktion wie ein normales Applescript ausführen und die Funktion "Ordnerelemente hinzufügen" mit einem Befehl "Ordner auswählen" auslösen. So kann ich manuell auf einen bestimmten Quell- und Zielordner verweisen und das Skript zum Laufen bringen.
Ich habe das versucht, aber kein Ergebnis:
set this_folder to choose folder with prompt "Select source folder:"
with multiple selections allowed
set target_folder to choose folder with prompt "Select backup folder:"
on adding folder items to this_folder after receiving these_items
tell application "Finder" to duplicate these_items to target_folder
end adding folder items to
Irgendwelche Vorschläge, wie man die beiden Teile des Scriptings miteinander kombinieren kann, damit sie interagieren können?
Danke!
Patrick
Entfernen Sie einfach den Handler und ändern Sie die Variable „these_items“ für „this_folder“ wie folgt:
set this_folder to choose folder with prompt "Select source folder:" with multiple selections allowed
set target_folder to choose folder with prompt "Select backup folder:"
tell application "Finder" to duplicate this_folder to target_folder
Führen Sie das Skript dann als normales Skript aus und es kopiert den Ordner vollständig an Ihr Ziel.
Wenn Sie hingegen nur die Elemente kopieren möchten (nicht den Ordner), können Sie diese Variante verwenden:
set this_folder to choose folder with prompt "Select source folder:" with multiple selections allowed
set target_folder to choose folder with prompt "Select backup folder:"
tell application "Finder"
set these_items to list folder of this_folder without invisibles
repeat with i from 1 to count of these_items
set ItemX to item i of these_items
set ItemX to (this_folder & ItemX as string) as alias
duplicate ItemX to target_folder
end repeat
end tell
In beiden Fällen würden Sie am Ende ein Duplikat des Inhalts des Ordners erhalten.
Angesichts Ihrer Kommentare unten führt diese Version das Skript als Ordneraktion aus, erinnert sich jedoch an Ihren Zielordner, wenn Sie am Anfang des Skripts eine Eigenschaft deklarieren. Wenn Sie das Skript neu kompilieren, werden Sie erneut gefragt.
property target_folder : ""
on adding folder items to this_folder after receiving these_items
if target_folder = "" then
set target_folder to ¬
choose folder with prompt "Select source folder:" with multiple selections allowed
else
try
--if the script has a property that has been deleted (i.e., the destination folder), it will cause
--an error that resolves by asking for a new folder
set target_folder to target_folder as alias
on error
set target_folder to ¬
¬
choose folder with prompt "Select source folder:" with multiple selections allowed
end try
end if
tell application "Finder" to duplicate these_items to folder target_folder
end adding folder items to
Ich hoffe das hilft.
@Patrick de Gier, diese geänderte Version des Codes von @MBUST , ermöglicht es dem Benutzer, jedes Mal einen Zielordner auszuwählen
on adding folder items to this_folder after receiving these_items
set target_folder to choose folder with prompt "SELECT TARGET FOLDER:" with multiple selections allowed
tell application "Finder" to duplicate these_items to folder target_folder
end adding folder items to
Pat78
Pat78
MBUST
Pat78
Pat78
MBUST
Pat78
Pat78
MBUST