[GastForen Programmierung/Entwicklung AppleScript Dateien umbenennen mit Hilfe einer Excel-Tabelle

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

Dateien umbenennen mit Hilfe einer Excel-Tabelle

tony_danza
Beiträge gesamt: 29

26. Mär 2018, 14:52
Beitrag # 31 von 37
Beitrag ID: #563134
Bewertung:
(4522 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Super,

vielen Dank!

Ich denke so können nun alle Mitleser nachvollziehen über was wir hier die ganze Zeit geredet haben.

Leider fehlt mir gerade die Zeit ein paar Fragen zum Script zu stellen, das werde ich aber machen sobald ich kann.

Manches ist mir nämlich noch nicht so ganz klar.

Trotzdem, bis hierhin ein riesen Dank noch mal Hans!
Dank deiner Hilfe kann ich mich meinem eigentlichen Job wieder widmen und muss nicht mehr so viel Zeit mit Dateien umbenennen verbringen ;)

viele Grüße
tony


als Antwort auf: [#563133]
Hier Klicken X

Dateien umbenennen mit Hilfe einer Excel-Tabelle

tony_danza
Beiträge gesamt: 29

26. Mär 2018, 23:13
Beitrag # 32 von 37
Beitrag ID: #563142
Bewertung:
(4502 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

zu aller erst, habe ich eine allgemeine Verständnisfrage.

Du verwendest wiederholt Befehle wie:
Code
repeat with n from 1 to nFiles 
repeat with n from 2 to nItems
repeat with c from 1 to count of indexList
...

wofür stehen denn die Buchstaben?
In meiner Vorstellung steht n für number, i für index, c für ???

Stimmt das irgendwie? Also haben die Buchstaben irgendeine Bedeutung? Und wenn ja, sind die Buchstaben abhängig vom Inhalt der Liste?

In einer Zeile steht repeat with n from 2. Dem kann ich irgendwie nicht folgen. Warum denn nicht from 1?

Dann hast du folgende Zeile platziert:
Code
# die Anzahl Elemente zählen  
set nItems to count items of artNumList


Ist es denn notwendig die Anzahl der Elemente zu zählen? Oder dient das nur dazu, sich die Anzahl anzeigen zu lassen wenn man möchte?

Code
# Variablen initialisieren  
set noMatch to 0
set noCode to 0

Was genau bedeuten denn diese Zeilen?

Das findet ja weiter unten im Script noch Verwendung, allerdings werde ich nicht schlau daraus. Könntest du mir das noch bitte erklären?
Ich verstehe in diesen Zeilen
Code
on error  
set noCode to noCode + 1

eigentlich nur: set noCode to 0 + 1

Wenn ich das mit noCode und noMatch mal verstanden habe, dann werde ich auch schlau aus den nProb Zeilen.

Beim Handler hörts komplett auf. Ich nehme das einfach mal so hin, dass diese Zeilen die Liste sortieren. Das musst du mir auch nicht erklären. Irgendwann werde ich das schon verstehen. Man lernt nie aus ;)

Wäre aber super wenn du mir ein paar Antworten auf meine Fragen geben könntest.

Ich danke dir schon mal und vielen Dank noch mal für deine tolle Version des Scripts! Ich war begeistert zu sehen wie es unter Realbedingung läuft. Schnell und zuverlässig.

viele Grüße
tony


als Antwort auf: [#563133]

Dateien umbenennen mit Hilfe einer Excel-Tabelle

Hans Haesler
  
Beiträge gesamt: 5669

27. Mär 2018, 09:17
Beitrag # 33 von 37
Beitrag ID: #563144
Bewertung:
(4486 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Tony,

*****
das n in 'repeat with n from 1 to nFiles' ist die Zählervariable.

Die Bedeutung von n kann ein Kürzel für number sein. Bei i wäre es iteration (= lat. "iterare" = "wiederholen").

Das i sollte im Forum vermieden werden, weil [i] der Code zum Kursivstellen ist. Jetzt scheint es repariert zu sein, aber eine Zeitlang war im geposteten Script das [i] verschwunden und sämtliche folgende Zeichen waren kursiv.

Der Variablen-Name kann aber auch aus mehreren Zeichen bestehen: 'repeat with tony from 1 to nFiles' :-)

Die Ein-Zeichen-Benennung stammt aus der Ur-Zeit, als ein Script nicht mehr als 32'000 Zeichen umfassen durfte. Das lernte einen, sparsam zu sein ... Bei ein paar Scripts musste ich auf sämtliches Kommentieren verzichten.

*****
Zitat In einer Zeile steht repeat with n from 2.

Das Script beginnt mit Reihe zwei, weil in der ersten Reihe Worte wie "Artikelnummer", "Farbcode" usw. stehen.

*****
Zitat Ist es denn notwendig die Anzahl der Elemente zu zählen?

Als ich mit dem Entwickeln von AppleScripts begann, wurde einem empfohlen, die Anzahl Elemente vorher, ausserhalb der Schleife zu zählen. Damit dieser Wert nicht ständig, bei jedem Umgang geholt werden muss. Ich konnte damals keine Bremswirkung feststellen und habe den Rat nicht befolgt.

Aber bei einem JavaScript wird die Ausführung beschleunigt. Deshalb übernahm ich dieses Vorgehen auch für AppleScript. Schon nur, dass die Startzeile der Schleife "sauberer" aussieht.

Beim vorliegenden Droplet wird 'nFiles' bei der erneuten Schleife durch die gedroppten Dateien nochmals verwendet.

*****
Code
# Variablen initialisieren 
set noMatch to 0
set noCode to 0

Diese Zeilen machen genau das, was der Kommentar darüber sagt. Damit der Wert einer Variablen im Script inkrementiert werden kann, muss ihr vorher ein Wert zugewiesen werden.

Deaktiviere mal diese zwei Zeilen (# davorsetzen oder --). Dann kommt bei der Ausführung prompt eine Fehlermeldung.

Zitat set noCode to 0 + 1

So ist es. Aber wenn die Null so eingesetzt wird, ist der Wert am Schluss nicht grösser als eins. Auch wenn z.B. vier Dateien nicht umbenannt wurden.

*****
Zitat Beim Handler hörts komplett auf. Ich nehme das einfach mal so hin, dass diese Zeilen die Liste sortieren.

Im Oktober 2004 hatte Martin Fischer eine Lösung von mir so kommentiert:

Zitat Wow!
Den QuickSort-Handler hast Du aber nicht nur für die PDF-Vereinigung aus dem Ärmel gezogen ...
Da wird mir ganz schwindelig, wenn ich den versuche nachzuvollziehen.
Klasse!

Meine Antwort damals:

Zitat Die QuickSort-Routine ist nicht meine Erfindung. Dies ist übrigens die Turbo-Version. Es gibt eine
langsamere. Die schnelle hat den Vorteil, dass sie wirklich schnell ist. Aber in gewissen Fällen
habe ich damit Probleme gehabt. Das Resultat war leer. Ich muss mal versuchen, dies nachzustellen.

Bei der Turbo-Version ist zu Beginn des Handlers ein Script-Objekt definiert. Dessen Einsatz sorgt für viel mehr Geschwindigkeit.

*****
Zitat Ich danke dir schon mal und vielen Dank noch mal für deine tolle Version des Scripts! Ich war begeistert zu sehen wie es unter Realbedingung läuft. Schnell und zuverlässig.

Bitte sehr. Ich hoffe, dass es sich weiterhin bewähren wird. Doch wie immer gilt: Einsatz auf eigene Gefahr! Am besten immer vorher mindestens ein Backup der Dateien anlegen.

Gruss, Hans


als Antwort auf: [#563142]

Dateien umbenennen mit Hilfe einer Excel-Tabelle

tony_danza
Beiträge gesamt: 29

27. Mär 2018, 11:42
Beitrag # 34 von 37
Beitrag ID: #563148
Bewertung:
(4473 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

dank deiner Erklärungen wird mir nun so einiges klar.

Zitat Die Bedeutung von n kann ein Kürzel für number sein. Bei i wäre es iteration (= lat. "iterare" = "wiederholen").


Mir war nicht bewusst, dass ich irgendeine Zählervariable verwenden kann, ich dachte die Buchstaben hätten eine Bedeutung, abhängig vom Inhalt.

----
Jetzt machts auch klick bei 'repeat with n from 2'. An die Informationen in der ersten Zeile hatte ich nicht gedacht.


Ich hoffe ich kann daraus lernen und meine zukünftigen Scripts einfacher bzw. schlauer gestalten.

Auf jeden Fall ist AppleScript ein Helferlein den man nicht außer acht lassen sollte. AS kann in jedem Bereich zum Einsatz kommen und ich freue mich auf weitere Automatismen um meine Prozesse zu optimieren.

Vielen Dank für deine schnelle und kompetente Unterstützung.

gruß
tony


als Antwort auf: [#563144]

Dateien umbenennen mit Hilfe einer Excel-Tabelle

Hans Haesler
  
Beiträge gesamt: 5669

27. Mär 2018, 13:22
Beitrag # 35 von 37
Beitrag ID: #563153
Bewertung:
(4465 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Tony,

bitte sehr.

Nun, für eine "normale" repeat-Schleife braucht es drei Dinge:
– Zählervariable;
– Startwert;
– Stopwert.

Code
repeat with n from 1 to 3 
display dialog n
end repeat

Der Dialog zeigt den Wert von 'n' an.

Eine Schleife kann man auch rückwärts laufen lassen. Das ist notwendig, wenn ein Inhalt verändert wird.

Code
repeat with n from 3 to 1 by -1 
display dialog n
end repeat

Der Zusatz 'by -1' ist zwingend.

Falls Du Dich näher mit AppleScript befassen willst, dann empfiehlt sich ein gezieltes Studium.
Mit einem Buch. Oder einem Kursus.

Für beide findest Du genug Stoff bei Peter Fischer (alias Snow): http://www.fischer-bayern.de/phpBB2/index.php

Rechts oben sind acht Links. Der vierte ist "AppleScript-Bücher".
Rechts Mitte: Ein Link für das ebook "AppleScript für absolute Starter"
Rechts unten findest Du den Workshop (Themen "Dialoge", "Variablen" usw).

Happy learning! :-)

Gruss, Hans


als Antwort auf: [#563148]

Dateien umbenennen mit Hilfe einer Excel-Tabelle

tony_danza
Beiträge gesamt: 29

27. Mär 2018, 15:17
Beitrag # 36 von 37
Beitrag ID: #563157
Bewertung:
(4453 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

dass eine repeat-Schleife rückwärts laufen kann ist mir neu. Aber vielen Dank für den Tipp! Früher oder später werde ich bestimmt mal darauf zurückgreifen müssen.

Auf der Seite die du verlinkt hast war ich auch schon einige male und das hat mir sehr geholfen.

Bücher zu AppleScript habe ich mir noch nicht gekauft, das wäre aber nicht verkehrt. Bisher habe ich versucht aus Forenbeiträgen zu lernen und aus dem eBook.

Da ich aber nicht aufhören möchte AppleScript zu lernen, sind deine Tipps zu den Büchern bestimmt nicht verkehrt.

Danke dir und viele Grüße
tony


als Antwort auf: [#563153]

Dateien umbenennen mit Hilfe einer Excel-Tabelle

Hans Haesler
  
Beiträge gesamt: 5669

27. Mär 2018, 16:18
Beitrag # 37 von 37
Beitrag ID: #563161
Bewertung:
(4444 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Tony,

bitte sehr.

Der Zusatz by kann auch in einer vorwärtslaufenden Schleife eingesetzt werden.

Nur ungerade Werte anzeigen:

Code
repeat with n from 1 to 5 by 2 
display dialog n
end repeat

Nur Objekte mit geraden Werten behandeln:

Code
repeat with n from 2 to 6 by 2 
display dialog n
end repeat

Es gibt noch andere Arten von Schleifen (z.B. with x in aList oder eine Konstruktion mit while). Doch diese wirst Du selber finden.

Gruss, Hans


als Antwort auf: [#563157]
X