[GastForen Programmierung/Entwicklung AppleScript Dateien in Ordner sortieren

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

Dateien in Ordner sortieren

ruediger77
Beiträge gesamt: 9

26. Feb 2017, 10:52
Beitrag # 1 von 8
Bewertung:
(8312 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, da ich Applescript Anfänger bin, komme ich mit meinem Problem nicht weiter.
Meine Aufgabe Ich habe Dateien mit einer 7-stelligen Ziffer wobei die erste Ziffer die 5 ist (z.B 5001025) und eine Ordnerstruktur mit 250-Schritten (5000000-5000249, 5000250-499, usw). Die Dateien werden von einer Fräsmaschine z.B. 10 Stück auf einmal in einen "Verteilordner" gelegt und von dort aus sollen dann die Dateien, entweder über z.B.eine Ordneraktion oder 1x am Tag in die entsprechenden Ordner sortiert werden. Hierzu fehlt mir jegliche Idee und Wissen, deshalb würde ich mich sehr über eine Lösung freuen......
Einen ähnlichen Anwendungsfall hat "softikuss am 27.09-16 gelöst (Bilddateien in Ordner einordnen)
Seid gegrüßt Ruediger77
X

Dateien in Ordner sortieren

Hans Haesler
  
Beiträge gesamt: 5826

26. Feb 2017, 11:52
Beitrag # 2 von 8
Beitrag ID: #555903
Bewertung:
(8296 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ruediger,

herzlich willkommen im AppleScript-Forum auf HilfDirSelbst! :-)

Angenommen, die Ordnernamen haben 15 Zeichen: 5000000-5000249 (und nicht nur elf: 5000250-499).
Dann wäre die Ordnerstruktur so:

Code
5000000-5000249 
5000250-5000499
5000500-5000749
5000750-5000999
5001000-5001249
5001250-5001499
5001500-5001749
usw.

Und die Beispieldatei, deren Name mit 5001025 beginnt, müsste in den fünften Ordner verschoben werden.

Welches Suffix haben die Dateien?

Die Aufgabe ist nicht so einfach. Und vor heute Abend kann ich nicht versuchen, eine Lösung zu finden.

Gruss, Hans


als Antwort auf: [#555901]

Dateien in Ordner sortieren

ruediger77
Beiträge gesamt: 9

26. Feb 2017, 12:23
Beitrag # 3 von 8
Beitrag ID: #555904
Bewertung:
(8285 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans, besten dank für die rasche Antwort
Die von dir genannte Ordnerstruktur (Ordnernamen) ist völlig in Ordnung....
5000000-5000249
5000250-5000499
5000500-5000749
5000750-5000999
5001000-5001249
und die Beispieldatei, deren Name mit 5001025 beginnt, würde in den fünften Ordner verschoben werden.
Süffix:
Die Dateien heißen komplett z.B.
5010128A.MPF
das A am Ende der Datei kann durch die Buchstaben B-H von der Fräschmaschine ersetzt werden (bedeutet verschiedene Aufspannungen des Werkstücks).......soll aber in den gleichen Ordner wie 5010128A.MPF verschoben werden, die komplette Anzahl der Zahlen/Buchstaben ist aber immer gleich (mit Suffix und Punkt = 13)

Das dies eine "harte" Nuß ist, ahne ich selbst mit meinen rudimetären Kenntnissen...

nur noch zur Info, auf dem MacServer läuft noch MacOSX 10.9

Hab Dank
Gruß Rüdiger


als Antwort auf: [#555903]

Dateien in Ordner sortieren

Hans Haesler
  
Beiträge gesamt: 5826

26. Feb 2017, 22:12
Beitrag # 4 von 8
Beitrag ID: #555908
Bewertung:
(8233 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Rüdiger,

der nachfolgende Code als Programm gespeichert, ergibt ein Droplet.
Auf dessen Icon kann man einen Ordner ziehen. Oder einzelne oder mehrere Dateien.

Das Script setzt den Namen des Ziel-Ordners zusammen und verschiebt die aktuelle Datei in diesen Ordner.
Getestet mit Dateinamen von "5000000A.MPF" bis "5999999H.MPF".

Bei der ersten Ausführung muss der Hauptordner, welcher all die Unterordner enthält, gewählt werden.
Wenn im gewählten Hauptordner ein Zielordner nicht vorhanden ist, wird er erzeugt.

Code
(*   
DateienVerschieben_03d.app
Dieses Script verschiebt Dateien in entsprechende Ordner des Hauptordners
aufgrund der sieben Ziffern zu Beginn der Datei-Namen
© 27.02.17 / Hans Haesler, Châtelard 52, CH-1018 Lausanne
*)

property mainFolder : ""
global probCtr

-- einen Dialog zeigen, falls der Anwender einen Doppelklick auf das Droplet macht
on run
display dialog "Den Ordner auf dem Icon
dieses Droplets deponieren." buttons "OK" default button 1 with icon 0
end run

-- der 'open handler', welcher auf das Fallenlassen von Objekten reagiert
on open allObjects
-- den Hauptordnerpfad prüfen
tell application "Finder"
-- auswählen lassen falls nicht vorhanden
if not (exists mainFolder) then
set mainFolder to my defineFolder()
end if
end tell
set probCtr to 0
-- Wiederholschleife, welche die gedroppten Objekte zum Handler 'processObject' schickt
repeat with aObject in allObjects
processObject(aObject)
end repeat
-- den Anwender informieren
activate me
if probCtr is 0 then
display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1
else if probCtr is 1 then
display dialog "Eine Datei nicht verschoben." buttons "OK" default button 1 with icon 2
else if probCtr is greater than 1 then
display dialog "" & probCtr & " Dateien nicht verschoben." buttons "OK" default button 1 with icon 2
end if
end open

-- der Handler zur Wahl des Hauptordners
on defineFolder()
activate me
set newFolder to (choose folder) as Unicode text
return newFolder
end defineFolder

-- im folgenden Handler wird festgestellt, ob das Objekt ein Ordner oder eine Datei ist;
-- der Inhalt des Hauptordners wird aufgelistet; Dateien werden zum Handler 'processFile' gesandt.
on processObject(aObject)
-- wenn der Pfad mit einem Doppelpunkt endet, ist das Objekt ein Ordner
if (aObject as string) ends with ":" then
-- die Liste des Inhalts wird erstellt
tell application "System Events"
set contentsList to name of every file of folder (aObject as Unicode text)
end tell
-- die Wiederholschleife schickt die Dateien zum Handler 'processFile'
repeat with curItem in contentsList
set objPath to ((aObject as Unicode text) & curItem)
-- unsichtbare Dateien ausschliessen
if not (curItem starts with ".") then
-- Dateipfad und Name senden
if (count of curItem) is greater than 11 then
processFile(objPath as alias, curItem)
end if
end if
end repeat
-- wenn das Objekt eine Datei ist ...
else
tell application "Finder"
-- der Name der Datei ...
set fullName to name of file aObject
end tell
-- ... wird der Pfad und der Dateiname dem Handler 'processFile' übergeben
processFile(aObject, fullName)
end if
end processObject

-- die aktuelle Datei behandeln
on processFile(aObject, fullName)
-- die sieben Zeichen aus dem Dateinamen ziehen
try
set curNum to (text 1 thru 7 of fullName) as integer
on error
set probCtr to probCtr + 1
return
end try

-- den Ordnernamen errechnen und zusammensetzen
set tmpVal to (curNum div 250) - 20000
set firstVal to 5000000 + (tmpVal * 250)
set secondVal to firstVal + 249
set folName to (firstVal & "-" & secondVal) as string

-- und auch den vollen Pfad zum Unterordner
set curFolder to (mainFolder & folName) as string

tell application "Finder"
-- wenn der Ordner vorhanden ist ...
if (exists curFolder) then
-- ... versuchen, die aktuelle Datei hineinzuverschieben
try
move file aObject to curFolder with replacing
end try
else
-- sonst den Ordner zuerst erzeugen ...
set curFolder to make new folder at folder mainFolder with properties {name:folName}
-- ... und dann die Datei verschieben
try
move file aObject to curFolder with replacing
end try
end if
end tell
end processFile

Ich habe Dir das Script als Droplet gespeichert per PM zugestellt. Möglicherweise musst Du es erneut abspeichern.

Gruss, Hans


als Antwort auf: [#555904]
(Dieser Beitrag wurde von Hans Haesler am 27. Feb 2017, 09:46 geändert)

Dateien in Ordner sortieren

ruediger77
Beiträge gesamt: 9

27. Feb 2017, 05:14
Beitrag # 5 von 8
Beitrag ID: #555910
Bewertung:
(8172 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans, zuallererst einmal ein herzliches -Dankeschön-
für deine Arbeit, wie ich es dir tatsächlich danken kann weiß ich nicht, falls es da eine Möglichkeit gibt, sag mir bitte Bescheid.
Ich werde das script heute abend oder morgen testen können und gebe dir dann nochmals ein feedback........lass dir`s gut gehen, das wünsche ich dir
Gruß Rüdiger


als Antwort auf: [#555908]

Dateien in Ordner sortieren

Hans Haesler
  
Beiträge gesamt: 5826

27. Feb 2017, 09:51
Beitrag # 6 von 8
Beitrag ID: #555913
Bewertung:
(8107 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Rüdiger,

bitte sehr.

Ich habe gestern nicht geprüft, was geschieht, wenn die erste Ziffer des Dateinamens eine 6 oder eine 4 ist.

Diese Tests habe ich nun nachgeholt. Ergebnis: kein Problem. Die entsprechenden Ordner werden erzeugt und die Dateien verschoben.

Die Zeilen, welche den Namen des Zielordners errechnen und zusammensetzen ...

Code
set tmpVal to (curNum div 250) - 20000 
set firstVal to 5000000 + (tmpVal * 250)
set secondVal to firstVal + 249
set folName to (firstVal & "-" & secondVal) as string

... funktionieren mit Dateinamen von "1000000A.MPF" bis "9999999H.MPF".

Wenn aber die sieben ersten Zeichen eines Dateinamens nicht in eine Ganzzahl verwandelt werden können, geht das Script kommentarlos zur nächsten Datei über. Der Benutzer sieht zwar, welche Dateien nicht verschoben wurden. Aber es fehlt eine Meldung.

Deshalb habe ich das obenstehende Script ergänzt und im Code einen Problemzähler eingefügt. Das Droplet sende ich Dir per PM zu.

Zitat (...) falls es da eine Möglichkeit gibt, sag mir bitte Bescheid.

Eine Möglichkeit ist eine Spende ans Forum: http://hilfdirselbst.org/...amp;read_category=31

Davon bekomme ich allerdings keinen Cent. Im Gegenteil: Ich spende selber jedes Jahr CHF 100.–
Doch das ist es mir wert, allein schon, weil das Forum ein wertvolles "Nachschlagewerk" ist.

Gruss, Hans


als Antwort auf: [#555910]

Dateien in Ordner sortieren

Hans Haesler
  
Beiträge gesamt: 5826

3. Mär 2017, 19:15
Beitrag # 7 von 8
Beitrag ID: #556050
Bewertung:
(7894 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Rüdiger,

erst jetzt bemerkt: Dein Pseudo ist mit einem "p" versehen.
Offensichtlich hat es mit der Überweisung geklappt.
Das ist vorbildlich und ... nachahmenswert.

Herzlichen Dank!

Gruss, Hans


als Antwort auf: [#555910]

Dateien in Ordner sortieren

NEU!
Beiträge gesamt: 180

11. Apr 2017, 14:58
Beitrag # 8 von 8
Beitrag ID: #556967
Bewertung:
(7612 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin!

Ohne das Script genau zu prüfen… Eine Problematik ist mir gekommen, als ich das selbe für unser Fotoarchiv per AS frickeln wollte:

Was, wenn es das Zieöl schon gibt (Käme der Fall überhaupt vor?)?

move myFile to ServerTarget with replacing

Lustigerweise hat unser Fotostudio Dateinamen doppelt vergeben, bis ich das erstmal rausgefunden habe…
Jedenfalls sollte euer Script noch prüfen, ob die Datei existiert. Wenn ja, die Datei ans Ende eine Liste stellen und danach per Dialog fragen, was mit diesen Daten passieren soll. Bei mir kann man entweder einen Zeitstempel wählen, oder den Dateinamen um einen abgefragten String ergänzen, zB "File1234_SHOOTING120217.psd".

Und während des verschiebens noch ein bisschen Spielerei anstatt einer Progressbar?

display notification "Datei " & CurrentCounter & " von " & length of myFiles & " verarbeitet" with title "" & name of myFiles[j] subtitle "…/" & TruncedPath & "/"

und noch ein paar Spielerein?

set myOperator to system info
set myUser to short user name of myOperator
if myUser = "mm123456" then set myUser to "Max Mustermann"


Und am Ende vielleicht noch die Zeit fürs Einsortieren?

irgendwo am Anfang:
set startTime to (get current date)

und am Ende nachm Verschieben:
set endTime to (get current date)
set duration to endTime - startTime
set mins to duration div minutes
set secs to duration mod minutes


als Antwort auf: [#556050]
(Dieser Beitrag wurde von NEU! am 11. Apr 2017, 15:06 geändert)
X

Aktuell

Web / SEO / Blockchain / Betriebssystem
300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
17.04.2024

Online
Mittwoch, 17. Apr. 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!