Datei kopieren / duplicate File

BerndderHeld

Spätblühender Taffetapfe
Registriert
03.09.06
Beiträge
2.802
Hi,
Ich möchte eine Datei kopieren (von einem smb-share im Netzwerk) auf meinen lokalen Rechner.

Code:
tell application "Finder"
    duplicate item "/Volumes/Samsung-MightyDrive-01/bento.bentodb" 
   to "Desktop/bento.bentodb"
end tell
führt leider zu einer Fehlermeldung
„Finder“ hat einen Fehler erhalten: „"Desktop/bento.bentodb"“ kann nicht als „item "/Volumes/Samsung-MightyDrive-01/bento.bentodb"“ gesetzt werden.

Irgendwie blicke ich diese Applescript Syntax nicht. Kann mir da hier jemand bitte kurz erläutern?
 

salome

Golden Noble
Registriert
20.08.06
Beiträge
23.750
Möchtest du eine Datei kopieren oder in die Geheimnisse von Apple Script eindringen?
Bei letzterem muss dir wer andere helfen.
Aber wenn es nur ums kopieren geht und ich verstanden habe, dass du von einem Volumen auf ein anderes kopieren willst (dann musst du sicher im Script mehr angeben als nur Desktop), dann brauchst die Datei nur hinüber ziehen.
Wenn du aber auf dem gleichen Volumen kopieren willst, dann halte ⌥ während du die Datei auf den Desktop ziehst. Dann wird sie kopiert.
salome
 

BerndderHeld

Spätblühender Taffetapfe
Registriert
03.09.06
Beiträge
2.802
Naja wie Ich eine Datei über den Finder kopiere ist nicht das Problem. Ich habe verschiedene Sachen zum Thema Applescript mir angeschaut und das Problem ist das es für diesen Anwendungsfall verschiedene Schreibweisen gibt und Irgendwie keine Version bei mir funktioniert. Das Script soll am Ende natürlich noch mehr tun als nur die Datei zu kopieren. Das ist aber hier nicht relevant deswegen habe Ich es nicht mit eingefügt.

Ich werde mir diese Sache heute Mittag nochmal anschauen. Vielleicht werde dann ja schlauer sein.
 

salome

Golden Noble
Registriert
20.08.06
Beiträge
23.750
Wäre fein, wenn sich ein Scriptkundiger melden würde mit einem Tipp.
Mit dem Automator funktioniert es nicht?
salome
 

dewey

Gewürzluiken
Registriert
01.05.06
Beiträge
5.721
wieso überhaupt mit applescript und nicht einfach mit einem shellscript im terminal?

schau dir mal "man cp" an
 

BerndderHeld

Spätblühender Taffetapfe
Registriert
03.09.06
Beiträge
2.802
ja, im Terminal kann ich das auch. Ich habe mir auch schon überlegt es alternativ über ein shellscript zu machen.

Insgesamt soll ein Laufwerk gemountet werden, die Datei kopiert werden und dann Bento gestartet werden. Ich dachte AS wäre das ideale Mittel dafür. Der Rest funktioniert auch wunderbar, nur diese duplicate Syntax ist etwas verwirrend.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Ohne mich mit AS auszukennen: Muss der Zielpfad nicht ein relativer Pfad zum Benutzerordner sein, den man vorab vom System auflösen lässt?
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Hallo,

der Finder erwartet einen absoluten HFS-Pfad (file, alias oder file specification).
BerndderHeld, diese Voraussetzung erfüllst Du nicht, denn Du gibst einen POSIX-Pfad an.

Des Weiteren sollte der Finder für solche Dinge auch nicht genutzt werden.
Verwende z.B.

Code:
do shell script "cp " & quoted form of sourceLocation & " " & quoted form of targetLocation

Die Pfadangaben sind hier, wie bereits von Dir verwendet, POSIX.

Viele Grüße
 

BerndderHeld

Spätblühender Taffetapfe
Registriert
03.09.06
Beiträge
2.802
Ja das mit dem do shell script habe ich bereits eingebaut. Es funktioniert auch prinzipiell. Leider gibt:
Code:
do shell script "echo cp -r /Volumes/Samsung-MightyDrive-01/bento.bentodb" 
                   & quoted form of "Users/bernd/Library/Application Support/Bento"
mir kein korrekt maskiertes Leerzeichen zurück:
Ergebnis: "cp -r /Volumes/Samsung-MightyDrive-01/bento.bentodb
Users/bernd/Library/Application Support/Bento"
Auch …
Code:
[…]& quoted form of (POSIX path of "Users:bernd:Library:Application Support:Bento")
liefert das gleiche.

Ich habe also immer im Folder "Application Support" ein Problem. Für einen Tipp wäre ich sehr Dankbar.
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Hallo,

öffne das Terminal und tippe Deinen Befehl ein.
Dann werden Dir auch die zwei Fehler in Deinem Skript klar.

Schaue Dir mal meinen Code an, vergleiche und nutze ihn so.
Weise vorher den zwei Variablen Deine Pfadangaben zu.

z.B. so:
Code:
set sourceLocation to "Pfad/zu/A"
set targetLocation to "Pfad/zu/B"

do shell script "cp " & quoted form of sourceLocation & " " & quoted form of targetLocation

Viele Grüße
 

BerndderHeld

Spätblühender Taffetapfe
Registriert
03.09.06
Beiträge
2.802
Code:
cp -r /Volumes/Samsung-MightyDrive-01/bento.bentodb
     Users/bernd/Library/Application[COLOR=Red]\[/COLOR] Support/Bento

funktioniert ja im Terminal

Das Problem ist nur das das AppleScript keinen Backslash vor dem Leerzeichen im Ordnernamen mit übergibt.
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Hallo,

set sourceLocation to "/Volumes/Samsung-MightyDrive-01/bento.bentodb"
set targetLocation to "/Users/bernd/Library/Application Support/Bento/"

do shell script "cp -R " & quoted form of sourceLocation & " " & quoted form of targetLocation

Hast Du "quoted form" hier schon mal in sie Suche eingeben?
Dann hättest Du nämlich eine hitzige Debatte entdeckt. Wenn man nicht recherchiert, dann wird es halt wirklich sehr schwierig. ;)

Viele Grüße
 

BerndderHeld

Spätblühender Taffetapfe
Registriert
03.09.06
Beiträge
2.802
Naja, also das ich nicht recherchiert habe will Ich mir hier nicht vorwerfen lassen. Auch die Diskussion die es hier gab habe Ich gelesen.

Leider funktioniert das quoted form of in diesem Fall wohl nicht. Das Problem ist ja das das Leerzeichen eben nicht "gequoted" wird. Mit einfachen BeispielOrdnern funktioniert das bei mir auch prächtig. Nur halt nicht mit Ordnern die Leerzeichen enthalten.

Hast du es mal ausprobiert?
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Hallo,

Naja, also das ich nicht recherchiert habe will Ich mir hier nicht vorwerfen lassen.
Dein Code zeugt aber nicht davon. Soll aber nicht Gegenstand des Threads sein.

Hast du es mal ausprobiert?
Ich arbeite täglich damit ;)

Anbei ein Beispiel, das Leerzeichen enthält.
Einfach entpacken und das Skript ausführen.
Es wird die Datei "Das ist ein Bild.png" in den Unterordner "Hier her bitte!" verschoben.

Leider funktioniert das quoted form of in diesem Fall wohl nicht.
Glaube ich nicht, da dieses das A und O im Umgang mit der Shell ist.

Viele Grüße
 

Anhänge

  • Test.zip
    18,1 KB · Aufrufe: 79