1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

Dropbox erstellen

Dieses Thema im Forum "AppleScript" wurde erstellt von mak, 19.01.07.

  1. mak

    mak Gast

    Hallo,

    ich bin absoluter Newbie in diesem Metier und möchte einen aktiven Ordner auf einem Netzwerk-Volume installieren, der folgende Aktion durchführen soll:

    Die dort gesicherten PDFs sollen in zwei weitere Verzeichnisse verschoben werden...

    Demnach muss ich hier in dem Script zuerst den duplicate und dann den move Befehl anwenden - kann das zu Problemen führen bzw. wie gebe ich die resource in ein Netzwerk korrekt an?

    Kann ich dieses Script rein aus der Standard-Suite vom Finder lösen oder greifen diese Befehle nur vom Finder und ich muss das vielleicht sogar ganz anders lösen?

    Hmpf - ihr werdet wahrscheinlich schmunzeln, aber ich will auf dem Produktionsvolume nur ungerne als Newbie testen und bekomme dann ganz bestimmt riesigen Ärger mit meinem Admin :-D

    Deshalb ziehe ich Euch in diesem Falle lieber vorab zu rate... :innocent: und jeder braucht ja auch mal was zum Schmunzeln :-D

    Ich danke Euch vorab!
     
  2. hubionmac

    hubionmac Rheinischer Krummstiel

    Dabei seit:
    25.06.04
    Beiträge:
    379
    quasi mundgerecht

    Servus,

    wenn Du so etwas anlegst, würde ich das immer so allgemein wie nur möglich handhaben. D.h. Du versuchst in dem AppleScript so allg. Routinen und einfache wie möglich zu erzeugen.
    Ich arbeite dann bei solchen Scripten, bei denen Ordner auf einer Platte genutzt werden, immer gerne mit Aliasen, so muss man später das Script nicht mehr anpassen... blafasel....

    Also hier mal eine Lösung...schon kommentiert... quasi mundgerecht =)
    Code:
    on adding folder items to this_folder after receiving added_items
        -- so fangen Ordneraktionen an, alle in den Ordner hinzugefügten Dateien
        -- werden so in der Variable added_items zusammengefasst
        -- und der Ordner in dem sich das abspielt ist demnach this_folder
        tell application "Finder"
            set myfolderx to POSIX path of this_folder
            --der Ordner der überwacht wird... als UNIX Pfad
            set folderkind to kind of folder 1 of startup disk
            --Tod sicher, so bekommt man den Typ eines Ordners in eine Variable gespeichert
            set aliasfiles to every alias file of this_folder
            
            
            repeat with this_item in added_items
                -- jetzt wird der Reihe nach jede Datei/Ordner in den Ordner bewegte Datei abgearbeitet.
                if name of this_item ≠ "error.log" then
                    -- wirklich jede, nein error.log will keiner
                    set copycount to 0
                    repeat with this_aliasfile in aliasfiles
                        set isfolder to false
                        try
                            if kind of original item of this_aliasfile = folderkind then
                                set isfolder to true
                            end if
                        on error
                            set aliasname to name of this_aliasfile
                            set errosmsg to do shell script "date \"+%d.%m.%Y %H:%M:%S\""
                            set errosmsg to errosmsg & " Da gab es einen Fehler mit dem Alias " & aliasname & ", vielleicht zeigt der Alias auf keinen Ordner oder der Alias selber ist defekt."
                            --wir basteln uns einen Fehlermeldung fürs Log
                            do shell script "echo " & quoted form of errosmsg & " | cat>>" & quoted form of myfolderx & "error.log"
                            -- und schreiben das ans Ende des Error Logs bzw. in ein error Log
                            set label index of this_aliasfile to 2
                        end try
                        -- der Bereich ist nur zur Sicherheit, gegen Anwenderfehler
                        -- vielleicht ist ja ein Alias defekt oder zeigt auf etwas, in dass man nicht kopieren kann...
                        if isfolder = true then
                            try
                                duplicate this_item to this_aliasfile
                                set copycount to copycount + 1
                                -- in kopieren....
                            on error
                                set aliasname to name of this_aliasfile
                                set itemname to name of this_item
                                set errosmsg to do shell script "date \"+%d.%m.%Y %H:%M:%S\""
                                set errosmsg to errosmsg & "Hm, die Datei " & itemname & " scheint es in " & aliasname & " schon zu geben, also nix kopiert"
                                --wir basteln uns einen Fehlermeldung fürs Log
                                do shell script "echo " & quoted form of errosmsg & " | cat>>" & quoted form of myfolderx & "error.log"
                                -- und schreiben das ans Ende des Error Logs bzw. in ein error Log
                                set label index of this_item to 2
                            end try
                        end if
                    end repeat
                    
                    if copycount > 0 then
                        delete this_item
                        -- sollte die Datei zumindest in einen der Ordner kopiert worden sein, kann das Original gelöscht werden =)!
                    end if
                end if
            end repeat
        end tell
    end adding folder items to
    
    das dann als Skript abspeichern und in den Ordner /Library/Scripts/Folder Action Scripts speichern.
    (na ok, die Alias zu den Ziel-Ordnern musst Du natürlich dann noch anlegen..:-*
     
    Nathea gefällt das.
  3. mak

    mak Gast



    ich muss eins sagen: DANKE - ich bin dein fan :-* :-* :-*

    ich werde das gleich mal testen...:p
     

Diese Seite empfehlen