Applescript Anzahl objekte erfassen

LiRei

Mitglied
Thread Starter
Registriert
25.09.2024
Beiträge
15
Reaktionspunkte
0
Hallo,

möchte gerne per Applescript die Gesamtanzahl der Objekte erfassen wie sie im Infofenster angezeigt wird.
Und zwar von der Vorlage gefundener Dateien mit der Option Erstellungsdatum / Änderungsdatum seit x Tagen.

Folgendes funktionierende Script habe ich erstellt.
(Der Finder ist eingestellt auf das Fenster "Diesen Mac durchsuchen")

AppleScript:
set Ansicht to ""

repeat with i from 1 to 5
    tell application "Finder"
        activate
    end tell

    if i > 1 then
        tell application "System Events"
            key code 125
        end tell
    end if

    tell application "Finder"
        set w to open information window of (selection as alias)
    end tell

    tell application "System Events"
        tell process "Finder"
            set DieZahl to value of static text 9 of scroll area 1 of window 1
            set DerOrt to value of static text 11 of scroll area 1 of window 1
            set Ansicht to Ansicht & Zahl & return & DerOrt & return & return
        end tell
    end tell

    tell application "Finder"
        close information window of (selection as alias)
    end tell
end repeat
display dialog Ansicht

Geht das nicht eleganter und einfacher? Auch ohne Aufblinken des Screens?
Hoffe auf anregende Infos.

Gruß

Reinhard
 
Zuletzt bearbeitet von einem Moderator:
um zwei Festplatten immer auf den aktuell gleichen Stand zu bringen die Dateien und Ordner der letzten Erstellungen bzw. Änderungen suchen (mit Ausnahme von Systemdateien etc.). Die gefundenen Dateien abgleichen auf beiden Festplatten. Die Anweisung info for gibt leider nicht die Zahl der gefundenen Objekte - wie im Infofenster - wieder sondern "nur" die Größe - size.

1727287638901.png



Bin leider nicht so fit in Applescript und verstehe daher auch nicht die Info "Code in Code Tags".
Hört sich aber interessant und vielversprechen an. Gäbe es dazu ein Beispielscript??

Freundliche Grüße

Reinhard
 

Anhänge

  • 1727287568951.png
    1727287568951.png
    186,6 KB · Aufrufe: 31
Bin leider nicht so fit in Applescript und verstehe daher auch nicht die Info "Code in Code Tags".
Hört sich aber interessant und vielversprechen an. Gäbe es dazu ein Beispielscript??
Damit war dein Beitrag gemeint. Man kann Code hier auch mittels Tags leserlicher posten.

Warum nutzt du nicht rsync? Ist schon auf deinem Rechner. Wenn du eine GUI brauchst, dann google nach arsync und so was. Oder Chronosync oder die Suche hier im Forum.
 
verstehe daher auch nicht die Info "Code in Code Tags".
Hört sich aber interessant und vielversprechen an. Gäbe es dazu ein Beispielscript??

Freundliche Grüße

Reinhard

AppleScript:
set Ansicht to ""
repeat with i from 1 to 5
    tell application "Finder"
        activate
    end tell
 
    if i > 1 then
        tell application "System Events"
            key code 125
        end tell
    end if
 
    tell application "Finder"
        set w to open information window of (selection as alias)
    end tell
    tell application "System Events"
        tell process "Finder"
            set DieZahl to value of static text 9 of scroll area 1 of window 1
            set DerOrt to value of static text 11 of scroll area 1 of window 1
            set Ansicht to Ansicht & Zahl & return & DerOrt & return & return
        end tell
    end tell
    tell application "Finder"
        close information window of (selection as alias)
    end tell
end repeat
display dialog Ansicht


Nachdem man das anständig lesen kann, ist gleich aufgefallen:
set Ansicht to Ansicht & Zahl & return & DerOrt & return & return
in der Zeile wird Zahl addiert, die Variable wird nirgends definiert. Vermutlich meinst Du DieZahl

Das hätte aber im Durchlauf einen Fehler bringen müssen.
 
Zuletzt bearbeitet:
Um was für's Thema beizutragen, in bash.

Ein Shell Script, was mit rsync eine Kopie eines Volumes erstellt. Nicht mehr auf dem Original vorhandene Dateien werden auf der Kopie gelöscht. Unsichtbare Dateien die mit einem . Anfangen werden ausgeschlossen.

Als Textdatei mit scriptname.sh abspeichern und im Terminal mit sh scriptname.sh ausführen.

Könnte natürlich auch in AppleScript geschrieben werden, ist aber unnütz umständlich.

Simulation:
Bash:
#!/bin/bash

printf "Do you want to sync FW300RAID to FW300RAID2 (y/n)"
read answer

# Check user input
if [ "$answer" == "y" ]; then
    caffeinate rsync -a -P -v -n -h --delete --stats --itemize-changes --exclude='/.??*' --exclude='/.*' "/Volumes/FW300RAID/" "/Volumes/FW300RAID2"
fi


wirkliches Syncen, mit Löschen von Dateien, die nicht mehr auf dem Original vorhanden sind.
Bash:
#!/bin/bash

printf "Do you want to sync FW300RAID to FW300RAID2 (y/n)"
read answer

# Check user input
if [ "$answer" == "y" ]; then
    caffeinate rsync -a -P -v -h --delete --stats --itemize-changes --exclude='/.??*' --exclude='/.*' "/Volumes/FW300RAID/" "/Volumes/FW300RAID2"
fi
 
Hallo, danke für die Bemühungen. Aber ich fürchte es sind Perlen für einen relativ Unbedarften. Weder mit "Code in Code Tags" noch mit Shell-Script bin ich vertraut. (Den Fehler Zahl / DieZahl hatte ich schon korrigiert aber leider nicht mitgesendet. Hatte aber in der Tat einen Fehler produziert). Programme wie rsync nutze ich nicht weil ich mich darauf verlassen will was passiert - deswegen nachvollziebares Applescript. Ansonsten habe ich mich etwas mit Applescript befaßt und bekomme damit auch einiges hin. Aber mein Ziel ist nicht das programmieren sondern die Anwendung ohne allzu sehr in die Tiefe einzusteigen. Mein Applescript habe ich erweitert mit dem Eintrag in eine Excel Datei und bin mit dem Ergebnis (s.U.) eigentlich schon ganz gut zufrieden. Wenn es eine andere Möglichkeit gäbe die Daten aus den gefundenen Objekten in "Diesen Mac durchsuchen" auszulesen wäre das natürlich phantastisch (natürlich mit der Anzahl aller Objekte in den Ordnern und der Pfadangabe; die größe - size kann man natürlich mit info for erfassen).

Freundliche Grüße mit der Bitte um Verständnis für Unbedarfte

Reinhard
 
Programme wie rsync nutze ich nicht weil ich mich darauf verlassen will was passiert - deswegen nachvollziebares Applescript.
Aber rsync ist kein Programm in eigentlichen Sinn. Das ist ein Script für die Kommandozeile und tief im System drin.
 
Hallo, danke für die Bemühungen. Aber ich fürchte es sind Perlen für einen relativ Unbedarften. Weder mit "Code in Code Tags" noch mit Shell-Script bin ich vertraut. (Den Fehler Zahl / DieZahl hatte ich schon korrigiert aber leider nicht mitgesendet. Hatte aber in der Tat einen Fehler produziert). Programme wie rsync nutze ich nicht weil ich mich darauf verlassen will was passiert - deswegen nachvollziebares Applescript. Ansonsten habe ich mich etwas mit Applescript befaßt und bekomme damit auch einiges hin. Aber mein Ziel ist nicht das programmieren sondern die Anwendung ohne allzu sehr in die Tiefe einzusteigen. Mein Applescript habe ich erweitert mit dem Eintrag in eine Excel Datei und bin mit dem Ergebnis (s.U.) eigentlich schon ganz gut zufrieden. Wenn es eine andere Möglichkeit gäbe die Daten aus den gefundenen Objekten in "Diesen Mac durchsuchen" auszulesen wäre das natürlich phantastisch (natürlich mit der Anzahl aller Objekte in den Ordnern und der Pfadangabe; die größe - size kann man natürlich mit info for erfassen).

Freundliche Grüße mit der Bitte um Verständnis für Unbedarfte

Reinhard
Du kannst natürlich, fürchterlich Umständlich, dein gefunden - Fenster Fernsteuern.

Ja Fernsteuern, Key Codes senden ist nichts anderes. Mit Scripten hat das meiner Meinung nach nichts zu tun. Und sowas vermeide ich unbedingt. Du hast keinerlei Rückmeldung ob da die richtige Taste ans richtige Fenster kommt.

Was du möchtest geht wunderbar über die Shell. Oder wenn's in AppleScript sein soll: do shell script "Befehl".

Ob jetzt Bash oder AppleScript ist ziemlich ähnlich. Ich kombiniere beides, mein Dumper ist Shell- und AppleScript.

Was du da vorhast kannst du mit einer Sitzung ChatGPT gut umsetzen, da wird viel erklärt, du musst nur alles testen, es funktioniert nie etwas sofort auf Anhieb. Es benötigt nur Geduld und gute Fragen. Wenn's geht auf Englisch, manchmal ists in Deutsch sperrig.

Und du kannst die AI auch gezielt befragen, wenn unsicher bist. Ist wie ein doofer Lehrer, der alles weiß, aber oft nichts richtig versteht :-)
 
Hallo
vielleicht habe ich Mißverständnisse erzeugt.
Mein Ziel ist es auf zwei verschiedenen Festplatten "immer" den gleichen
Stand zu haben. Dabei können Veränderungen einmal auf der einen (externen)
Festplatte mit einem zweiten Computerr entstehen, das andere Mal auf dem
"Originalen Comupter mit interner Festplatte". Alle 4 bis 7 Tage will ich den aktuellen
Stand auf jedem Speichermedium abgleichen.
Deswegen erstelle ich eine Suche mit der Funktion "Letzte Änderung". Diese dient als Vorlage zum
Abgleich.
Jetzt hab ich mich jetzt ein klein wenig mit shell befaßt. Aber da müßte man ja schon alleine
alle Buchstaben etc. interpretieren können.
Bash:
caffeinate rsync -a -P -v -h --delete --stats --itemize-changes --exclude='/.??*' --exclude='/.*' "/Volumes/FW300RAID/" "/Volumes/FW300RAID2"

Gibt es einfachere Hilfen??

Reinhard
 
Zuletzt bearbeitet von einem Moderator:
Datenbestände, Dateien und Dokumente über mehrere Computer und/oder Nutzer synchron zu halten ("abgleichen") ist nun wahrlich keine neue Idee ...
Und das Hin-und-her-tragen von externen Festplatten ist so ungefähr die älteste davon.
In der Computertechnik ist man da inzwischen mehrere Generationen weiter

Seit Jahr umd Tag verwendet man für solche Zwecke lokale Netzwerke, hier unter so Stichworten wie SMB oder NAS geläufig.
Damit kann man schon seit vielen, vielen Jahren den Austausch ("Abgleich") von Daten bewerkstelligen.

Eine für dich sehr geeignete, aktuell sehr beliebte Funktion bezeichnet man als "Cloud". Damit kann man Datenbestände über mehrere Computer an mehreren Orten in Echtzeit ("immer" !!) synchron halten.
Statt mit AppleScript oder schwer verständlichen Shell-Befehlen herumzubasteln, empfehle ich dir, sich einmal mit sowas intensiv zu beschäftigen.

Für Mac etc. bieten sich z.b. die iCloud-Dienste und Systeme von Apple an.
Wenn Produkte vom Microsoft dabei eine Rolle spielen (ich sehe da Excel-Macros), kommt z.B. auch Microsoft's OneDrive in Frage.

Diese Systeme erledigen die Synchronisation / "Abgleich" in Echtzeit "wie von selbst" und ganz ohne Gebastel.

IMG_0660.jpeg
https://support.apple.com/de-de/guide/mac-help/mh36832/mac
 
Hallo
vielleicht habe ich Mißverständnisse erzeugt.
Mein Ziel ist es auf zwei verschiedenen Festplatten "immer" den gleichen
Stand zu haben. Dabei können Veränderungen einmal auf der einen (externen)
Festplatte mit einem zweiten Computerr entstehen, das andere Mal auf dem
"Originalen Comupter mit interner Festplatte". Alle 4 bis 7 Tage will ich den aktuellen
Stand auf jedem Speichermedium abgleichen.
Deswegen erstelle ich eine Suche mit der Funktion "Letzte Änderung". Diese dient als Vorlage zum
Abgleich.
Jetzt hab ich mich jetzt ein klein wenig mit shell befaßt. Aber da müßte man ja schon alleine
alle Buchstaben etc. interpretieren können.
caffeinate rsync -a -P -v -h --delete --stats --itemize-changes --exclude='/.??*' --exclude='/.*' "/Volumes/FW300RAID/" "/Volumes/FW300RAID2"

Gibt es einfachere Hilfen??

Reinhard

Ganz Allgemein: man Befehl.

Detaillierte Erklärung kann eine AI. Quelle perplexity.ai


bash
caffeinate rsync -a -P -v -h --delete --stats --itemize-changes --exclude='/.??*' --exclude='/.*' "/Volumes/FW300RAID/" "/Volumes/FW300RAID2"

1. caffeinate

  • Zweck: Dieser Befehl wird verwendet, um zu verhindern, dass das System während der Ausführung des rsync-Befehls in den Ruhezustand wechselt. Das ist besonders nützlich für lang andauernde Prozesse, um sicherzustellen, dass die Operation ohne Unterbrechung abgeschlossen wird.

2. rsync

  • Zweck: rsync ist ein leistungsstarkes Tool zum Kopieren und Synchronisieren von Dateien und Verzeichnissen zwischen verschiedenen Orten. Es ist effizient, da es nur die Unterschiede zwischen Quelle und Ziel überträgt.

3. Verwendete Optionen

  • -a: Steht für "Archivmodus", der Berechtigungen, Zeitstempel, symbolische Links und andere Metadaten beibehält.
  • -P: Diese Option kombiniert --partial (um teilweise übertragene Dateien zu behalten) und --progress (um den Fortschritt während der Übertragung anzuzeigen).
  • -v: Aktiviert die ausführliche Ausgabe, die detaillierte Informationen darüber liefert, was rsync gerade macht.
  • -h: Gibt Zahlen in einem menschenlesbaren Format aus.
  • --delete: Löscht Dateien im Zielverzeichnis, die nicht mehr in der Quelle vorhanden sind, sodass beide Verzeichnisse identisch bleiben.
  • --stats: Gibt nach Abschluss der Übertragung Statistiken über den Transfer aus.
  • --itemize-changes: Zeigt eine Zusammenfassung der während der Übertragung vorgenommenen Änderungen an.

4. Ausschlussmuster

  • --exclude='/.??*': Schließt versteckte Dateien und Verzeichnisse (die mit einem Punkt beginnen) auf der Wurzelebene des Quellverzeichnisses aus.
  • --exclude='/.*': Schließt zusätzlich alle versteckten Dateien und Verzeichnisse vom Kopieren aus der Wurzel des Quellverzeichnisses aus.

5. Quelle und Ziel

  • Quelle: "/Volumes/FW300RAID/": Das Verzeichnis, von dem kopiert wird.
  • Ziel: "/Volumes/FW300RAID2": Das Verzeichnis, in das kopiert wird.

Zusammenfassung​

Dieser Befehl synchronisiert effektiv Dateien zwischen zwei Volumes, während er versteckte Dateien von der Wurzel des Quellverzeichnisses ausschließt und das System während der Operation am Laufen hält. Er sorgt dafür, dass beide Volumes auf dem neuesten Stand bleiben und bietet detailliertes Feedback über die vorgenommenen Änderungen während des Prozesses.
 
Herzlichen Dank für die umfassende und informative Antwort.
"Seit Jahr umd Tag verwendet man für solche Zwecke lokale Netzwerke, hier unter so Stichworten wie SMB oder NAS geläufig." - werde mich informieren.

Freundliche Grüße

Reinhard
 
dann hab ich doch noch eine Frage:
wenn ich den Ordner (HOrdn) mit Excel erfasse
kann ich dann mit Applescript anwenden:

AppleScript:
tell application "Microsoft Excel"
    set HOrdn to value of cell 4 of column 1
end tell
-- Ergebnis   ->  "Lb Extern:Lb_BUCH"
-- Ergebnis evtl.   ->  "Lb Extern:Lb_BUCH:"

do shell script "kMDItemFSNodeCount" of HOrdn
führt zum Ergebnis

AppleScript:
error "„kMDItemFSNodeCount of \"Lb Extern:Lb_BUCH\"“ kann nicht gelesen werden." number -1728 from kMDItemFSNodeCount of "Lb Extern:Lb_BUCH"

geht es auch ohne error???

Freundliche Grüße

Reinhard
 
Zuletzt bearbeitet von einem Moderator:
Verwendet bitte die Code-Tags </> im Editor für Code. :)
 
Hallo,
würde gerne Code-Tags benutzen, aber wie?

Eigentlich müßte es doch ganz einfach sein.

In Mac Terminal eingegeben:
ls Desktop

Ergebnis super.

wie geht es ein Liste zu erstellen von:
anderes Volume statt Startvolume oder externe Festplatte
Darauf bestimmter Ordner
darin bestimmter Ordner

also:
Bash:
ls Volumes/Festplatte/Ordner_A/Unterordner_A
oder
Bash:
ls Festplatte/Ordner_A/Unterordner_A

Wie muß der Befehl aussehen?????

Freundliche Grüße

Reinhard
 
Zuletzt bearbeitet von einem Moderator:
AppleScript:
Bash:

war das gefordert???????

hab das Problem auf der Terminal Ebene gelöst.
Hab den Order reingezogen.
Bash:
ls /Volumes/NameFestplatte/NameOrdnerA/NameOrdnerB

wie muß es dann von applescript aufgerufen werden??

Freundliche Grüße

Reinhard
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben Unten