Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Dateien in unsichtbaren Ordner verschieben

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
babaloo
•->
•->


Anmeldedatum: 20.02.2008
Beiträge: 12

BeitragVerfasst am: 18.05.2016 - 12:54    Titel: Dateien in unsichtbaren Ordner verschieben Antworten mit Zitat

Hallo,

ich möchte im Finder ausgewählte Dateien in einen vorher definierten Ordner verschieben. Das geht auch solange, bis ich als Ziel einen Ordner angebe, der mit einem Punkt im Dateinamen beginnt (der also im Finder ein unsichtbarer Ordner ist).

So funktioniert es:

Code:
tell application "Finder"
   set dateien to selection
   set ordner to folder "Macintosh HD:Users:Username:Desktop:Ziel:"
   move dateien to ordner without replacing
end tell



Und so nicht:

Code:
tell application "Finder"
   set dateien to selection
   set ordner to folder "Macintosh HD:Users:Username:Desktop:.Ziel::"
   move dateien to ordner without replacing
end tell


Ich bekomme dann den Skriptfehler:
Zitat:
„Finder“ hat einen Fehler erhalten: „folder "Macintosh HD:Users:Username:Desktop:.Ziel:"“ kann nicht gelesen werden.


Was mache ich falsch?
Respektive, wie kriege ich das mit dem Anfangspunkt im Dateinamen geregelt?



EDIT: Es liegt wohl am Finder. Der hat Probleme mit unsichtbaren Ordnern, solange sie im Finder tatsächlich unsichtbar sind. Die Lösung soll "System Events" sein (für den move-Befehl). Das scheitert bei mir aber ebenso.

Hilft der Hinweis mit System Events?


Zuletzt bearbeitet von babaloo am 18.05.2016 - 14:00, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
babaloo
•->
•->


Anmeldedatum: 20.02.2008
Beiträge: 12

BeitragVerfasst am: 18.05.2016 - 13:53    Titel: Antworten mit Zitat

Ein weiterer Versuch mit shell script scheitert ebenso.

Code:
tell application "Finder"
   set dateien to selection
   set quelle to (POSIX path of (selection as alias))
   set ordner to "~/Desktop/.Ziel"
   
   repeat with i in dateien
      do shell script "mv" & space & quoted form of POSIX path of quelle & space & ordner
   end repeat
   
end tell


Es funktioniert zwar, allerdings nur bei Finderauswahl einer einzelnen Datei. Sind mehrere Dateien ausgewählt erscheint der Skriptfehler

Zitat:
{alias "Pfad:zu:Datei1", alias "Pfad:zu:Datei2"} kann nicht in Typ alias umgewandelt werden.


Irgendeine Idee?



PS: falls noch nicht bemerkt, ich bin blutiger Anfänger in Sachen AppleScript. Laughing
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
babaloo
•->
•->


Anmeldedatum: 20.02.2008
Beiträge: 12

BeitragVerfasst am: 18.05.2016 - 15:22    Titel: Antworten mit Zitat

Lösung: string statt alias

Code:
tell application "Finder"
   set dateien to selection
   set ordner to "~/Desktop/.Ziel"
   repeat with i in dateien
      set quelle to (POSIX path of (i as string))
      do shell script "mv" & space & quoted form of POSIX path of quelle & space & ordner
   end repeat
end tell


Funktioniert für eine wie für mehrere Dateien und auch mit einem unsichtbaren Ordner als Ziel.

Sollte das noch irgendwie eleganter gehen, dann nehme ich gerne Anregungen auf.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lösung_Monitor_Auflös_App
•-->
•-->


Anmeldedatum: 25.01.2016
Beiträge: 53

BeitragVerfasst am: 23.05.2016 - 09:22    Titel: Antworten mit Zitat

Wenn ich das letzte hier gepostete Skript laufen lasse resultiert folgende Fehlermeldung hat Folgendes geschrieben:
„Finder“ hat einen Fehler erhalten: mv: rename /Users/HD/Desktop/Ausgewählte files/ to /Users/HD/Desktop/.Ziel: Not a directory
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
babaloo
•->
•->


Anmeldedatum: 20.02.2008
Beiträge: 12

BeitragVerfasst am: 25.05.2016 - 02:24    Titel: Antworten mit Zitat

Existiert bei dir denn ein Ordner namens ".Ziel" auf deinem Schreibtisch? Der muss nämlich schon da sein. Ansonsten benennt das Skript die Datei einfach nur um in ".Ziel". Wenn es mehrere Dateien sind, überschreibt das Skript sie solange, bis die letzte Datei kopiert/bewegt ist.

Sprich, wenn der unsichtbare Ordner .Ziel bei dir nicht von Anfang an da war, hast du nun eine unsichtbare Datei namens .Ziel auf dem Schreibtisch. Und diese Datei hat den Inhalt der zuletzt bewegten Datei.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 29.05.2016 - 13:29    Titel: Antworten mit Zitat

Um den Fehler, daß bei nicht-existenten Ordner .Ziel die Dateien in .Ziel umbenannt werden, zu vermeiden, bietet es sich in unixoiden Betriebssystemen an, einen "/" anzuhängen. Also in Deinem Script nicht

Code:
 set ordner to "~/Desktop/.Ziel"

sondern
Code:
 set ordner to "~/Desktop/.Ziel/"

_________________
"All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies")
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
babaloo
•->
•->


Anmeldedatum: 20.02.2008
Beiträge: 12

BeitragVerfasst am: 30.05.2016 - 21:35    Titel: Antworten mit Zitat

Danke, Skeeve. Für mich und für dieses Skript nicht so relevant, da ich den Ordner ja vorher angelegt hatte.
Aber für andere und für mich bei zukünftigen Projekten ein willkommener Hinweis. Danke nochmal!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Wolle-77
•--->
•--->


Anmeldedatum: 25.02.2003
Beiträge: 447
Wohnort: Geldern

BeitragVerfasst am: 30.05.2016 - 23:40    Titel: Antworten mit Zitat

Wenn hier schon noch Leben im Thread ist, dann möchte ich doch auch noch einen wichtigen Hinweis geben (an babaloo)

Du solltest darauf achten bzw. bedenken, an welchen Prozeß Du Events sendest (die Grundlage von AppleScript – AppleEvents werden empfangen und gesendet).

In Deinem Fall hast Du das so stehen:

tell app "Finder"

end tell

Das heißt, alles wird über den Finder abgewickelt. Das funktioniert zwar, aber das wäre so, als wenn Du im Büro einem Mitarbeiter sagst, "Sag dem mal bescheid, der soll für mich was machen". Das funktioniert auch, aber es ist langsamer und unperformanter.

Daher: Das einzige, was der Finder machen muß, ist Dir die selection liefern.

Code:
tell app "Finder" to set dateien to selection


Der Rest des Scriptes verwendet die Standard Bibliotheken und braucht den Finder somit nicht mehr.

Wenn Du das testest in einer Schleife mit einigen hunderten Durchgängen, wirst Du (oder auch bei aufwendigeren Scripten) schnell Laufzeitoptimierungen von mehreren Sekunden bis Minuten feststellen können.

Ich weiß gar nicht mehr wann, aber irgendwann hat Apple AppleScript mal optimiert und seitdem ist das unbedingt zu beachten.

Und dann wird unser Experte hier etwas weiter oben (…) auch nicht mehr die Meldung bekommen "Finder hat einen Fehler erhalten", sondern eben "Es ist ein Fehler aufgetreten" – wenn der zweite Mitarbeiter als Ziel, der angesprochen wurde, etwas zu tun etwas nicht kann, dann sagt der eben nicht direkt dem Chef bescheid, sonden würde dann auch umständlich wieder dem ersten Mitarbeiter sagen "sag mal, daß ich das zur Zeit nicht kann" …

Wink
_________________
Martin Wolter
--
Apple rocks the planet!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
babaloo
•->
•->


Anmeldedatum: 20.02.2008
Beiträge: 12

BeitragVerfasst am: 31.05.2016 - 09:45    Titel: Antworten mit Zitat

Sehr guter Hinweis, Wolle-77! Danke!!
Ich mache nur seeehr wenig mit AppleScript, habe die Sprache nie gelernt und schustere mir meine kleinen Skripte irgendwie zusammen. Aber alles, was mein Verständnis erweitert, ist herzlich willkommen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter