Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Snow Administrator
![Administrator Administrator](/phpBB2/images/ranks/ranki5.gif)
![](images/avatars/14843438503e582f0f04e8a.gif)
Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 31.10.2004 - 15:49 Titel: Finder: Ordnerstruktur duplizieren |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
spirigwi •----->
![•-----> •----->](/phpBB2/images/ranks/ranki4.gif)
![](images/avatars/7063387742ebdb604cce3.jpg)
Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 31.10.2004 - 22:52 Titel: |
|
|
" 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 |
|
![](templates/subSilver/images/spacer.gif) |
Snow Administrator
![Administrator Administrator](/phpBB2/images/ranks/ranki5.gif)
![](images/avatars/14843438503e582f0f04e8a.gif)
Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 01.11.2004 - 12:28 Titel: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
spirigwi •----->
![•-----> •----->](/phpBB2/images/ranks/ranki4.gif)
![](images/avatars/7063387742ebdb604cce3.jpg)
Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 01.11.2004 - 19:11 Titel: Re: Finder: Ordnerstruktur duplizieren |
|
|
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](images/smiles/icon_eek.gif) _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
Snow Administrator
![Administrator Administrator](/phpBB2/images/ranks/ranki5.gif)
![](images/avatars/14843438503e582f0f04e8a.gif)
Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 01.11.2004 - 20:03 Titel: Re: Finder: Ordnerstruktur duplizieren |
|
|
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!" |
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 |
|
![](templates/subSilver/images/spacer.gif) |
Snow Administrator
![Administrator Administrator](/phpBB2/images/ranks/ranki5.gif)
![](images/avatars/14843438503e582f0f04e8a.gif)
Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 01.11.2004 - 20:33 Titel: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
Snow Administrator
![Administrator Administrator](/phpBB2/images/ranks/ranki5.gif)
![](images/avatars/14843438503e582f0f04e8a.gif)
Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 01.11.2004 - 21:17 Titel: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
jiuer7845 •---->
![•----> •---->](/phpBB2/images/ranks/ranki3.gif)
Anmeldedatum: 06.04.2021 Beiträge: 521
|
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
|
|
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
|
|
|