[GastForen Programmierung/Entwicklung AppleScript Dateien per AppleScript suchen lassen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Dateien per AppleScript suchen lassen

Anonym
Beiträge gesamt: 22827

15. Jan 2004, 07:40
Beitrag # 1 von 13
Bewertung:
(6492 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
ich bin einmal wieder auf der Suche nach einem Script was mir folgende Arbeiten abnimmt:
Ein XPress Dokument wird ausgelesen und von den geladenen Bilder wird mir eine SimpleText Datei generiert. Anhand dieser Liste möchte ich gerne Bilder suchen lassen (die nicht in meiner Bilddatenbank sind) sondern auf verschiedenen Volumes verteilt sind.
Ist so etwas möglich?
Danke
Uwe
X

Dateien per AppleScript suchen lassen

Hans Haesler
  
Beiträge gesamt: 5826

15. Jan 2004, 11:14
Beitrag # 2 von 13
Beitrag ID: #418570
Bewertung:
(6491 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

das Erstellen der Liste ist relativ einfach. Das Suchen per Script sollte möglich sein, habe ich aber noch nie gemacht. Ich kann mir aber vorstellen, dass die Suche sehr zeitaufwendig sein kann, je nach Anzahl der gemounteten Volumes und der Ordner, welche darin enthalten sind.

Das Problem dabei ist, dass ein Script in jeden Ordner schauen wird. Im Gegensatz zum manuellen Suchen, wo der Anwender gezielter vorgehen kann, indem er Ordner, von welchen er weiss, dass die Bilder nicht dort stecken können, gar nicht aufmacht.

Bevor ich ans Entwickeln gehe, brauche ich noch verschiedene Angaben:
1. Version von QuarkXPress.
2. Version des Mac OS.
3. Wieviele Bilder sind so in einem typischen Dokument?
4. Trifft der Status "fehlt" für alle Bilder im XPress-Dokument zu, oder hat es welche, die "OK" sind?
5. Was soll mit "gefundenen" Bildern getan werden?

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#418569]

Dateien per AppleScript suchen lassen

Anonym
Beiträge gesamt: 22827

15. Jan 2004, 12:44
Beitrag # 3 von 13
Beitrag ID: #418571
Bewertung:
(6491 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
hier die gewünschten Infos:

1. XPress Version 4
2. MAC OS X (10.3.1), bei Problemen auch noch OS 9 möglich
3. ca. 10 Bilder pro Dok
4. alle Bilder sind fehlend
5. Das Ergebniss soll entweder eine Textdatei oder eine Art Fenster sein, woraus ich sehen kann in welchen Ordnern die Bestandteile zu finden sind
Bei Namensgleichheit alle Bestandteile auflisten.

Danke
Uwe


als Antwort auf: [#418569]

Dateien per AppleScript suchen lassen

Hans Haesler
  
Beiträge gesamt: 5826

15. Jan 2004, 13:30
Beitrag # 4 von 13
Beitrag ID: #418572
Bewertung:
(6491 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

noch mehr Fragen, damit die Suche möglichst eingeschränkt werden kann:

6. Muss nur in den Volumes gesucht werden?
7. Wieviele sind es normalerweise?
8. Oder muss auch die Harddisk mit einbezogen werden?
9. Wieviele Partitionen hat die Harddisk?
10. Kommt es auch vor, dass eine CD (oder sonst ein externes Medium) eingelegt ist?

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#418569]

Dateien per AppleScript suchen lassen

Anonym
Beiträge gesamt: 22827

15. Jan 2004, 13:35
Beitrag # 5 von 13
Beitrag ID: #418573
Bewertung:
(6491 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hanns,

6. Suche nur auf den Volumes
7. höchstens drei Volumes
8. Harddisk nicht mit einbeziehen
9. -
10. ja, CD ist auch möglich

Uwe


als Antwort auf: [#418569]

Dateien per AppleScript suchen lassen

Hans Haesler
  
Beiträge gesamt: 5826

15. Jan 2004, 15:38
Beitrag # 6 von 13
Beitrag ID: #418574
Bewertung:
(6491 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

ich habe jetzt ein Script (unter Mac OS 9), welches funktioniert.

Aber meine Befürchtungen sind bestätigt: es würde viel zu lange dauern, bis auch nur ein Bild lokalisiert ist. Denn ich nehme an, dass auf den Volumes viele Ordner untergebracht sind.

Ich muss deshalb die Sache anders angehen und versuchen, mit Perl (und so) eine Lösung zu finden. Doch dies wird dauern, weil ich mich zuerst schlau machen muss. Ich werde mich wieder melden.

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#418569]

Dateien per AppleScript suchen lassen

Hans Haesler
  
Beiträge gesamt: 5826

18. Jan 2004, 21:36
Beitrag # 7 von 13
Beitrag ID: #418575
Bewertung:
(6492 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

hier ist eine provisorische Lösung. Leider nicht vollautomatisch. Leider etwas umständlich.

1. Ein XPress-Dokument öffnen und das folgende Script abspielen.
2. Es erzeugt im Ordner des eingeloggten Benutzers die Textdatei "Dokumentname.txt" mit den Namen der Bilder.
3. Später diese Datei öffnen, den ersten Namen auswählen, mit Befehl-C kopieren.
4. In den Finder wechseln und mit Befehl-F den Suchen-Dialog aufrufen.
5. Im Menü "Suchen" den Artikel "An bestimmten Orten" wählen.
6. Die Checkboxen der gewünschten Volumes aktivieren.
7. Durch Klick auf den "&#151;" Button die Eigenschaften auf eine Such-Zeile reduzieren.
8. Die Artikel "Name" und "ist" einstellen.
9. Den Namen in das Feld einsetzen und auf "Suchen" klicken.

Das Suchergebnis erscheint recht schnell. Der übergeordnete Ordner wird angegeben. Wenn man die Zeile auswählt, wird unten der ganze Pfad angezeigt.

Leider kann dieser Such-Dialog nicht per Script angesprochen werden. Man kann ihn deshalb nicht im Batchbetrieb mit den Namen füttern, sondern muss dies manuell und Name um Name vornehmen. Aber es ist die weitaus schnellste Lösung, welche ich im Moment anzubieten habe.
---
on checkDoc()
  tell application "QuarkXPress 4.11"
    activate
    if (exists of document 1) is false then
      display dialog "Öffne zuerst ein XPress-Dokument." buttons &not;
        "OK" default button 1 with icon 2
      error number -128
    end if
  end tell
end checkDoc

on makeList()
  tell document 1 of application "QuarkXPress 4.11"
    set imgName to ""
    set AppleScript's text item delimiters to {":"}
    set imgList to {}
    set docName to name
    if (count of docName) > 27 then set docName to text 1 thru 27 of docName
    repeat with i from 1 to count of picture boxes
      try
        tell picture box i
          tell image 1
            if bounds is not {0, 0, 0, 0} then
              set filePath to ((get file path) as string)
              if filePath is not "null" and filePath is not "no disk file" then
                set imgName to last text item of filePath
                if imgName is not in imgList then
                  set end of imgList to imgName
                end if
              end if
            end if
          end tell
        end tell
      end try
    end repeat
  end tell
  if imgList = {} then
    set AppleScript's text item delimiters to {""}
    display dialog "Dieses Dokument enthält keine Bilder." buttons "OK" default button 1 with icon 0
    error number -128
  end if
  if (count of imgList) > 1 then
    quicksort(imgList, 1, length of imgList)
  end if
  set AppleScript's text item delimiters to return
  set aString to text items of imgList as text
  set AppleScript's text item delimiters to {""}
  writeList(docName, aString)
end makeList

on writeList(docName, aString)
  set imgFile to ((path to "cusr") as Unicode text) & docName & ".txt"
  try
    open for access file imgFile with write permission
    set eof of file imgFile to 0
    write aString to file imgFile
    close access file imgFile
  on error errMsg
    try
      close access file imgFile
    end try
  end try
  tell application "QuarkXPress 4.11"
    display dialog "Fertig." buttons "OK" default button 1 with icon 1
  end tell
end writeList

on quicksort(a, L, R)
  set i to L
  set n to R
  set aRef to item L of a as text
  repeat while i < n
    repeat while (aRef < item n of a) and (i < n)
      set n to n - 1
    end repeat
    if n is not i then
      set item i of a to item n of a
      set i to i + 1
    end if
    repeat while (aRef > item i of a) and (i < n)
      set i to i + 1
    end repeat
    if n is not i then
      set item n of a to item i of a
      set n to n - 1
    end if
  end repeat
  set item n of a to aRef
  if L < n then
    quicksort(a, L, n - 1)
  end if
  if R > i then
    quicksort(a, i + 1, R)
  end if
  return a
end quicksort

--main - - - - -
checkDoc()
makeList()
---
Wenn Du es vorziehst, kann die Liste der Namen auch in ein neues XPress-Dokument kopiert werden. Denkbar ist auch ein Droplet, auf welches mehrere XPress-Dokumente gezogen werden können.

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#418569]

Dateien per AppleScript suchen lassen

Anonym
Beiträge gesamt: 22827

19. Jan 2004, 09:55
Beitrag # 8 von 13
Beitrag ID: #418576
Bewertung:
(6491 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
vielen Dank für die Hilfe. Ich habe es ausprobiert und es funktioniert, wenngleich noch viel "Handarbeit" zu erledigen ist.
Aber man ist ja über jede Arbeitserleichterung dankbar.

Grüße
Uwe


als Antwort auf: [#418569]

Dateien per AppleScript suchen lassen

Anonym
Beiträge gesamt: 22827

20. Jan 2004, 13:31
Beitrag # 9 von 13
Beitrag ID: #418577
Bewertung:
(6491 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hey,

wenn ich dieses script unter os 9.2.2 und qxp 5.01 einsetzten will was muß ich da ändern. ich habe ja kein homeverzeichniss wie unter osx. reicht da nur der pfad zum ablegen der txt-datei.

gruß
chris


als Antwort auf: [#418569]

Dateien per AppleScript suchen lassen

Hans Haesler
  
Beiträge gesamt: 5826

20. Jan 2004, 14:27
Beitrag # 10 von 13
Beitrag ID: #418578
Bewertung:
(6491 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hey chris,

genau: es reicht den Pfad im Handler 'on writeList(docName, aString)' zu ändern. Statt das Verzeichnis des aktuellen Benutzers anzugeben &#133;
Code
set imgFile to ((path to "cusr") as Unicode text) & docName & ".txt" 

&#133; kannst Du mit dem Pfad zur Harddisk beginnen &#133;
Code
set imgFile to ((path to startup disk) as string) & docName & ".txt" 

&#133; wobei '((path to startup disk) as string)' den Namen der Harddisk wiedergibt.

Wenn Du noch einen oder mehrere Ordner einflechten willst, geschieht dies so:
Code
set imgFile to ((path to startup disk) as string) & "Ordner1:" & "Ordner2:" & docName & ".txt" 

Die Ordnernamen musst Du durch existierende ersetzen.

Wie vorher schon erklärt, werden die Namen der Bilder des ersten QuarkXPress-Dokumentes in eine Textdatei geschrieben, welche den Namen des XPress-Dokumentes bekommt, plus das Suffix ".txt".

Je nach Aufgabe kann es aber praktischer sein, wenn die Liste der Bilder in ein neues XPress-Dokument kopiert wird und man sie sofort ausdrucken kann. Ich werde Dir ein Script für QuarkXPress 5.01 schicken, welches erlaubt, entweder nur die Namen der Bilder oder mitsamt dem ganzen Pfad in eine Textbox zu kopieren.

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#418569]

Dateien per AppleScript suchen lassen

Anonym
Beiträge gesamt: 22827

20. Jan 2004, 14:30
Beitrag # 11 von 13
Beitrag ID: #418579
Bewertung:
(6491 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hey hans,

wie immer hast du uns sehr weitergeholfen. bin schon mal gespannt auf dein script.

gruß
chris


als Antwort auf: [#418569]

Dateien per AppleScript suchen lassen

Anonym
Beiträge gesamt: 22827

21. Jan 2004, 07:37
Beitrag # 12 von 13
Beitrag ID: #418580
Bewertung:
(6491 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
was für einen Befehl muß ich denn eingeben, wenn ich das Ergebniss in ein Verzeichniss auf einem Servervolume sichern will.
Damit es für jeden sichtbar ist, und nicht auf in dem Home-Verzeichniss des Users?

Danke
Uwe


als Antwort auf: [#418569]

Dateien per AppleScript suchen lassen

Hans Haesler
  
Beiträge gesamt: 5826

21. Jan 2004, 09:00
Beitrag # 13 von 13
Beitrag ID: #418581
Bewertung:
(6491 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

im Handler 'on writeList(docName, aString)' musst Du die Zeile &#133;
Code
set imgFile to ((path to "cusr") as Unicode text) & docName & ".txt" 

&#133; in welcher der Pfad zur Textdatei zusammengesetzt wird, ändern.

Anstelle von '((path to "cusr") as Unicode text)' musst Du den Pfad zum Zielordner des Volumes angeben. Zu Beginn und zum Schluss ein Anführungszeichen. Als Abschluss der Namen des Volumes und der Ordner einen Doppelpunkt setzen:
Code
set imgFile to "VolumeName:Ordner1:Ordner2:" & docName & ".txt" 

Damit ist der Pfad "hard-wired" eingetragen. Diese Lösung wird man wählen, wenn der Zielordner immer derselbe ist. Man könnte per Script testen, ob der Ordner vorhanden ist. Wenn nicht, eine Meldung zeigen und entweder die Ausführung abbrechen oder den Anwender auffordern einen Zielordner zu wählen. In diesem Fall muss aber der Ordnerpfad beim Zusammensetzen des Pfades zur Textdatei als Variable definiert sein.

Damit hat man Anwenderfreundlichkeit und Souplesse in einem: der Zielordner kann flexibel gewählt werden, ohne dass das Script editiert werden muss. Falls man den Ordner wechseln möchte, muss man den bisherigen löschen, verschieben oder umbenennen. Erst dann fordert das Script auf, einen Ordner zu wählen.

Wenn Du an einer solchen Lösung interessiert sein solltest, dann könnte ich sie Dir zustellen.

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#418569]
X