2009-05-23 22 views
9

Ich muss ein AppleSript erstellen, das bestimmte Dateien von einem Ordner in einen neu erstellten Ordner kopiert.Applescript Datei in einen neuen Ordner kopieren

Diese Dateien müssen im Applescript-Editor festgelegt werden, so etwas wie:

start 

fileToBeMoved = "Desktop/Test Folder 1/test.doc" 
newfoldername = "Test Folder 2" 

make newfolder and name it 'newfoldername' 
copy 'fileToBeMoved' to 'newfolder' 

end 

Antwort

4

Der Trick mit Applescript ist, dass das Verschieben von Dateien unter Verwendung von Aliasnamen erfolgt.

Realistischer könnte es einfacher sein, stattdessen ein Shell-Skript zu erstellen, das von AppleScript mit do shell script ausgeführt werden kann, wenn Sie Automator oder etwas ähnliches verwenden.

#!/bin/sh 

fileToBeMoved = "~/Desktop/Test Folder 1/test.doc" 
newFolderName = "Test Folder 2" 
mkdir $newFolderName 
cp $fileToBeMoved $newFolderName 
+0

Sein gutes diese Methode über die Apple diejenigen zu verwenden, verursachen manchmal könnten Sie Berechtigungsprobleme haben und Verwenden Sie diesen Weg hilft dann. –

+0

Die Nachteile davon sind: Benutzer wird keine Fortschrittsbalken sehen, wenn die Kopie länger dauert. Der Benutzer kann aus dem gleichen Grund auch nicht abbrechen. Die Unterstützung dieser Operationen mit einem Shell-Befehl ist viel schwieriger, als den Finder einfach ausführen zu lassen. Nachteil von Applescripting im Finder: Wenn der Benutzer sich entscheidet, eine Ersatzanwendung "Finder" zu verwenden, kann die Applescript-Operation fehlschlagen (nicht sicher, hängt wahrscheinlich davon ab, wie gut die Ersetzung geschrieben ist). –

+1

Ein weiteres Plus für die Verwendung des Finders: Wenn das Zielelement vorhanden ist, wird der Benutzer aufgefordert zu ersetzen oder nicht. –

9

Allgemein:

tell application "Finder" 
    make new folder at alias "Macintosh HD:Users:user:Desktop:" with properties {name:"Test Folder 2"} 
    copy file "Macintosh HD:Users:user:Desktop:Test Folder 1:test.doc" to folder "Macintosh HD:Users:user:Desktop:Test Folder 2" 
end tell 

können Sie Variablennamen hinzufügen, die POSIX-Dateien und Pfade darstellen.

Offensichtlich ist der Doppelpunkt (:) ein reserviertes Zeichen für Ordner- und Dateinamen.

Sie können auch eine Fehlerprüfung hinzufügen, wenn der Zielordner bereits existiert.

3
set home_path to path to home folder as string 
set work_folder to alias (home_path & "AutomationAppleScript:ScreenShots:") 
tell application "Finder" 
    duplicate every file of work_folder to folder "Archive" of home 
end tell 
1

Diese für das Kopieren zu einem montierten Netzwerk-Volume funktioniert:

mount volume "afp://compname.local/mountpoint" 
    tell application "Finder" 
     duplicate file "MyTextFile.txt" of folder "Documents" of home to disk "mountpoint" 
     eject "mountpoint" 
    end tell 
0

Wenn es ein sync Sie suchen Sie den folgenden Shell-Skript in Ihrem Apple ausführen können:

rsync -a /Users/username/folderToBeCopiedFrom /Volumes/folderToBeCopiedTo/

0
tell application "Finder" 
    make new folder at desktop with properties {name:"folder"} 
    duplicate POSIX file "/usr/share/doc/bash/bash.html" to result 
end tell 

POSIX file ((system attribute "HOME") & "/Documents" as text) 
tell application "Finder" to result 

tell application "Finder" to duplicate (get selection) to desktop replacing yes 

-- these are documented in the dictionary of System Events 
path to home folder 
POSIX path of (path to documents folder) 
path to library folder from user domain 
path to desktop folder as text 

-- getting files as alias list is faster 
tell application "Finder" 
    files of entire contents of (path to preferences folder) as alias list 
end tell 
0

Ich habe Chealions Shell-Skript-Lösung verwendet. Vergessen Sie nicht, Ihre Skriptdatei ausführbar zu machen mit: sudo chmod u+x scriptFilename

Entfernen Sie auch den Abstand zwischen dem = Zeichen in den Variablenzuweisungen. Wäre das nicht mit den Räumen, zum Beispiel arbeiten: newFolderName="Test Folder 2"

0

Der einfache Weg, es zu tun, wie unten ist, sagt

set home_path to path to home folder as string 
set work_folder to alias (home_path & "AutomationAppleScript:ScreenShots:") 
tell application "Finder" 
    duplicate every file of work_folder to folder "Archive" of home 
end tell 
Verwandte Themen