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

Finder: Ordnerstruktur duplizieren

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> OS X-Snippets
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1955
Wohnort: Deiningen

BeitragVerfasst am: 31.10.2004 - 15:49    Titel: Finder: Ordnerstruktur duplizieren Antworten mit Zitat

Vielleicht kann jemand das folgende Snippet gebrauchen. Es dupliziert die genaue Ordnerstruktur des Quellordners in einen Zielordner.
Im Zielordner entstehen also nur leere Ordner, ohne dass man vorher alles kopieren und dann die enthaltenen Dateien entfernen müsste.

Dabei werden auch fehlende Ordner in bereits existierenden Ordnern angelegt. Die Ordnerstruktur wird praktisch (einseitig) synchronisiert.

Code:

-- Quellordner festlegen
set O1 to ((path to desktop as string) & "Scripts & more:") as alias
--
Zielordner festlegen
set O2 to ((path to desktop as string) & "ActionTest:") as alias

tell application "Finder"
    my OrdnerAnlegen(O1, O2)
end tell

on OrdnerAnlegen(O1, O2)
    tell application "Finder"
        set O1C to name of (folders of O1)
        
if class of O1C is not list then set O1C to {O1C}
        
set O2C to name of (folders of O2)
        
if class of O2C is not list then set O2C to {O2C}
        
repeat with oneItem in O1C
            if oneItem is not in O2C then
                make new folder at folder O2 ¬
                    with properties {name:oneItem}
            end if
            
set O1temp to ¬
                ((O1 as text) & ":" & oneItem) as alias
            set O2temp to ¬
                ((O2 as text) & ":" & oneItem) as alias
            my OrdnerAnlegen(O1temp, O2temp)
        end repeat
    end tell
end OrdnerAnlegen


Bisher habe ich das Skript nur unter OS X getestet, es müsste aber auch unter OS 9 laufen.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com


Zuletzt bearbeitet von Snow am 01.11.2004 - 21:12, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1529
Wohnort: Olten-CH

BeitragVerfasst am: 31.10.2004 - 22:52    Titel: Antworten mit Zitat

" Ein Super-Snippet, hi Snow, gail
in zweierlei Hinsicht:
1) das Ding ist extrem praktisch
2) dient es wiederum der Differenzen-Suche OSX4 / OS9: die man gar
nicht genug ernst nehmen kann

--meine Literatur dazu: klar aus Snows Forum :
http://www.fischer-bayern.de/phpBB2/viewtopic.php?t=723


Im folgenden wird Snows Snippet als Variante "a little BIG" erweitert:
OSX4 / OS9:-gehfähig solls sein und ist es auch, allerdings vorher beachte *--!
Wie man sieht hat die Darstellung nebeneindader von Quell- und Zielordner zur dramatischen "Vereinfachung" und "Verkurz-Längerung" von Snows ca 8 Skriptzeilen auf > 100? geführt(den seinen gibts der Herr halt im Schlaf...)

OSX4 / OS9: stellt nebeneinander dar: Quellordner(=gechoost)und Zielordner(=erzeugt)

--läuft aus mir unbekannten Gründen absolut fehlerlos in beiden Systemen der Firma MAC

hat Folgendes geschrieben:
--=================OSX4(**)============================
--oooooooooooooooo
(*--entschärfen für OSX mit -- an Rand
on Fold2()
   tell application "Finder"
      set current view of folder O2 to list view
      set sort column of list view options of folder O2 to name column
   end tell
end Fold2
--entschärfen für OSX
--oooooooooooooooo
on PosGanzPfadFoldTEX()
   tell application "Finder"
      set bounds of Finder window 1 to {361, 170, 807, 551}
      set current view of Finder window 1 to list view
   end tell
end PosGanzPfadFoldTEX
--oooooooooooooooo
on Posb2()
   tell application "Finder"
      set bounds of Finder window 1 to {14, 100, 670, 523}
      set current view of Finder window 1 to list view
   end tell
end Posb2
*)
--entschärfen für OSX -- vor *)
--===================OSX(**)==========================
-- Quellordner festlegen: Variante zu:
-- set O1 to (path to desktop as string) & "Scripts & more"
set BUTTAntwDia1 to my Dialog1() as string
if (BUTTAntwDia1) contains "HOSE" then --dann tote Hose...
   return
end if
set AppleScript's text item delimiters to ""
set GanzPfadFoldTEX to choose folder with prompt "Quellordner auswählen"
set {a, O1QuellOrdName} to my QuellOrdPath(GanzPfadFoldTEX)
set O1 to a & O1QuellOrdName
-- Zielordner festlegen: Variante zu:
--set O2 to (path to desktop as string) & "ActionTest"
set b2 to O1QuellOrdName & 2
my Ordner02Anlegen(b2)
set O2 to (path to desktop as string) & b2
tell application "Finder"
   activate
   close (every window)
   try
      set visible of every process to false
   end try
   open folder O2
   try --OS9
      set view of container window of folder O2 to name
   on error --OSX(**)
      try
         my Fold2()
      end try
   end try
   my OrdnerAnlegen(O1, O2)
   open folder GanzPfadFoldTEX
   my OrdVergleich(GanzPfadFoldTEX, b2)
end tell
--ooooooooooooooooo
on Ordner02Anlegen(b2)
   tell application "Finder"
      --variante für 02
      try
         make new folder at desktop with properties {name:b2}
      on error
         display dialog "Wahrscheinlich gibt es schon auf Schreibtisch
den Ordner:
" & b2 & "?" buttons {"Abbrechen"} default button 1
      end try
   end tell
end Ordner02Anlegen
--ooooooooooooooooo
on OrdnerAnlegen(O1, O2)
   tell application "Finder"
      set O1C to name of (folders of (O1 as alias))
      if class of O1C is not list then set O1C to {O1C}
      set O2C to name of (folders of (O2 as alias))
      if class of O2C is not list then set O2C to {O2C}
      repeat with oneItem in O1C
         if oneItem is not in O2C then
            make new folder at folder O2 with properties {name:oneItem}
         end if
         try
            set O1temp to ((O1 as text) & ":" & oneItem) as alias
         on error
            set O1temp to ((O1 as text) & oneItem) as alias --":" &
         end try
         -----------------------------
         try
            set O2temp to ((O2 as text) & ":" & oneItem) as alias
         on error
            set O2temp to ((O2 as text) & oneItem) as alias -- ":" &
         end try
         
         my OrdnerAnlegen(O1temp, O2temp)
      end repeat
   end tell
end OrdnerAnlegen
--ooooooooooooooooo
on QuellOrdPath(path)
   set PatStrTEX to (path as string)
   set LangPatStrTEXNR to (length of PatStrTEX)
   set LangPathstrMin1NR to LangPatStrTEXNR - 1
   set PatstrOhneDoPktTEX to (text 1 thru LangPathstrMin1NR of PatStrTEX)
   set ReversODoppPktTEX to (reverse of (characters of PatstrOhneDoPktTEX)) as string
   set OsetNR to offset of ":" in ReversODoppPktTEX
   --sicher gibt es Formel für 2.Vorkommen von [offset of ":"]??
   if OsetNR = 0 then
      beep 2
      set PfBisOrdNameTEX to (path to desktop folder as string) & PatstrOhneDoPktTEX
      display dialog PfBisOrdNameTEX & return & return & "Oben sieht man den Disk-Pfad, für diese Art kann ichs nicht lösen, ev.könnt ihr es?" & return & return & "Ordner auf dem Schreibtisch anlegen, die keine Disks sind, gehen mühelos"
      return
   end if
   -------------------------
   set PfBisOrdNameTEX to (text 1 thru -OsetNR of PatstrOhneDoPktTEX)
   set LangPfBisOrdNameTEXNR to (length of PfBisOrdNameTEX)
   set StartPktOrdnerNameNR to LangPfBisOrdNameTEXNR + 1
   set OrdnerNameTEX to (text StartPktOrdnerNameNR thru LangPathstrMin1NR of PatstrOhneDoPktTEX)
   return {PfBisOrdNameTEX, OrdnerNameTEX}
end QuellOrdPath
--ooooooooooooooo
on OrdVergleich(GanzPfadFoldTEX, b2)
   tell application "Finder"
      activate
      try --OS9
         set size of container window of folder GanzPfadFoldTEX to {179, 316}
         set position of container window of folder GanzPfadFoldTEX to {497, 110}
         set size of container window of folder GanzPfadFoldTEX to {283, 478}
         set view of container window of folder GanzPfadFoldTEX to name
         ------
         set size of container window of folder b2 to {284, 523}
         set position of container window of folder b2 to {8, 61}
         set view of container window of folder b2 to name
      on error --OSX(**)
         try
            open folder GanzPfadFoldTEX
            my PosGanzPfadFoldTEX()
            ---
            open folder b2
            my Posb2()
         end try
      end try
   end tell
end OrdVergleich
--oooooooooooooooo
on Dialog1()
   set i1IcNrDia1 to 2
   set i2GivUpDia1 to 20
   set i3TITELDia1 to "Irgend einen Ordner wählen der als Quellordner " & return & "dient(Ausnahme: Disks!kann ich nicht)" & return & "am Schluss werden der" & return & "• Quellordner geöffnet rechts posiert" & return & "• Zielordner kommt auf Schreibtisch und" & return & " wird geöffnet links posiert" & return & " ACHTE! zu grosse Brocken=time-out"
   set i5Bu2Dia1 to "Alles klar, gib choosen des Ordners"
   set i6Bu3Dia1 to "HOSE voll! STOP!"
   set BuDefDia1 to i5Bu2Dia1 --<=ändern?
   activate
   ----dpdDia1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
   set Dia1dpdDia1 to display dialog i3TITELDia1 buttons {i5Bu2Dia1, i6Bu3Dia1} default button BuDefDia1 with icon i1IcNrDia1 giving up after i2GivUpDia1
   set Dia1dpdDia1List to {}
   set Dia1dpdDia1List to {button returned} of Dia1dpdDia1
end Dialog1



Ps:
vielleicht hilfts jemandem: OSX ist in seinen Befehlsketten sehr gnädig mit OS9, indem häufig schlicht unmögliche Wörter auf OSX in Veriablen umgewandelt werden. Sehr praktisch, da diese Stellen dann mit try...umgangen werden können

OS9 geht aber natürlich mit OSX-palaver gnadenlos um: damit sind OSX-typische Sätze nicht kompilierbar! und vernichten ganzes Skript:

Für eine OSX9-AS-Version stellt mans mal auf OSX her, auf OS9-Kisten müssen die OSX typischen Stellen (*-geklammert*) werden. Ich hab hier mal ein Modell probiert.
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius


Zuletzt bearbeitet von spirigwi am 12.05.2005 - 07:32, insgesamt 17-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1955
Wohnort: Deiningen

BeitragVerfasst am: 01.11.2004 - 12:28    Titel: Antworten mit Zitat

Hallo Willy,

danke für's Testen und für die Fehlerkorrektur. Ich habe jetzt mein obiges Skript entsprechend ausgebessert.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1529
Wohnort: Olten-CH

BeitragVerfasst am: 01.11.2004 - 19:11    Titel: Re: Finder: Ordnerstruktur duplizieren Antworten mit Zitat

Snow hat Folgendes geschrieben:

Bisher habe ich das Skript nur unter OS X getestet, es müsste aber auch unter OS 9 laufen.


"Also bin ich nicht ganz Gott verlassen mit OS9
die Adaptationen gegenseitig 9X sind aus genug Gründen zwingend!

Vorschlag: ich baue auf OS9 dein Superskript jeweils im 2.Posting(=Antwort) und versuche Aenderungen mit
"
--Grüntext zu zeigen
"(ZB wenn der Ordner Aliasse enthält klemmts wieder)
eine Aenderung melde ich als posting zuunterst, wie du es jetzt gemacht hast.
Gehts das OK?

Wie dankbar ich wär wenn du es mir auf OSX laufen lässt mit Angabe meiner gröbsten Fehler auf OSX,dann lassen wir 2 Versionen als Snippet stehen als Ziel beide laufen OS9X je nach Anspruch.
Meine Version kann leider gar nicht genug komplex sein da wir sonst nie auf prinzipielle Fehler kommen und ich brauche unbedingt den Profi OS9<->OSX.Ich meine da können alle massiv profitieren von dir
"

--Meine klitze-kleine adaptierte Ausgabe
"läuft Os9 super,allerdings war das O im 02 kaum zu erkennen,Schlaumeier!"


SNOW, i am in the starting-Löchlein Shocked
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1955
Wohnort: Deiningen

BeitragVerfasst am: 01.11.2004 - 20:03    Titel: Re: Finder: Ordnerstruktur duplizieren Antworten mit Zitat

spirigwi hat Folgendes geschrieben:
Vorschlag: ich baue auf OS9 dein Superskript jeweils im 2.Posting(=Antwort) und versuche Aenderungen mit[/color]"
--Grüntext zu zeigen
"(ZB wenn der Ordner Aliasse enthält klemmts wieder)
eine Aenderung melde ich als posting zuunterst, wie du es jetzt gemacht hast.
Gehts das OK?

Na klar geht das OK. Deswegen ist das Forum ja schließlich da. Ein wenig Teamwork kann nicht schaden. Falls noch jemand an dieser Idee mitbrüten möchte, nur immer ran an den Speck.

Zitat:
Wie dankbar ich wär wenn du es mir auf OSX laufen lässt mit Angabe meiner gröbsten Fehler auf OSX,dann lassen wir 2 Versionen als Snippet stehen als Ziel beide laufen OS9X je nach Anspruch.


Ich werd's mal versuchen.

Zitat:
Meine Version kann leider gar nicht genug komplex sein da wir sonst nie auf prinzipielle Fehler kommen und ich brauche unbedingt den Profi OS9<->OSX.Ich meine da können alle massiv profitieren von dir.


Mir ist es eigentlich in kleineren Happen wesentlich lieber. Wenn's zu kompliziert aussieht, bekomme ich Orientierungsprobleme.

Zitat:

--Meine klitze-kleine adaptierte Ausgabe
"läuft Os9 super,allerdings war das O im 02 kaum zu erkennen,Schlaumeier!"


Wink Das verstehe ich jetzt nicht. Es war doch klar, dass es nichts anderes als ein großes O sein konnte, da Zahlen am Beginn eines Variablennamens nicht zugelassen sind. -- Jetzt ernsthaft: Während ich das Skript noch eingetippt habe fiel mir die Verwechslungsgefahr zu einer Null nicht auf. Als es dann kompiliert mit einem anderen Zeichensatz dargestellt wurde, habe ich es bemerkt aber absichtlich nicht geändert. Es kann schließlich nicht schaden, wenn man gelegentlich mal wieder an die Namenskonventionen von Variablen erinnert wird.

Willy, eine Bitte noch: In der Schriftgröße 8 kann ich an keinem meiner Rechner das Skript entziffern. Könntest du das wieder größer machen (evtl. bei der nächsten Bearbeitung)?
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1955
Wohnort: Deiningen

BeitragVerfasst am: 01.11.2004 - 20:33    Titel: Antworten mit Zitat

Hallo Willy,

ich habe jetzt einen Probelauf deines Skripts unter OS X hinter mir.

An diversen Stellen musste ich

set view of .... to name

in

set current view of .... to icon view

abändern.

In OS X gibt es 'icon view', 'list view' und 'column view'.

Die Größe eines Finder-Fensters kann auch nicht mit 'size' festgelegt werden, sondern per 'bounds'.

Das Skript funktioniert nicht, wenn der Zielordner bereits exisitiert.

Ansonsten scheint es zu funktionieren.

In deinem Handler 'on QuellOrdPath' übergibst du in Klammern 'path'. Dies wird nicht als Variable sondern als Keyword formatiert - könnte also unter Umständen zu Problemen damit führen.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1955
Wohnort: Deiningen

BeitragVerfasst am: 01.11.2004 - 21:17    Titel: Antworten mit Zitat

Ich habe das Skript nochmals modifiziert.
Die Festlegungen des Ziel- bzw. Quellordners habe ich um einen Doppelpunkt sowie um 'as alias' ergänzt und die späteren Umwandlungen im Skript entfernt.

Somit sind die gleichen Voraussetzungen geschaffen wie für die Arbeit mit 'choose file'.

Unter OS 9 hatte ich durch die manuelle Ergänzung des Doppelpunktes am Ende des Dateipfades von O1 bzw. O2 gelegentlich Probleme. Manchmal endete O1 bereit mit einem Doppelpunkt (sollte bei Ordnern eigentlich immer der Fall sein), manchmal aber auch nicht. Dies Problem trat aber immer mit dem selben Ordner auf.

@ Willy: Welche Probleme gibt's mit Aliassen? Ich konnte keine feststellen.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> OS X-Snippets 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