Ordner aus Dateinamen Erstellen und benenne, kann das Applescript?

I

Iceberg70

Neues Mitglied
Thread Starter
Dabei seit
05.05.2011
Beiträge
14
Reaktionspunkte
0
So, nun habe ich mich endlich hier angemeldet, nachdem ich schon so lange mitlese ;)

Bei folgender Aufgabenstellung könnte mir das Applescript oder der Automator helfen:

Ich habe einen Ordner X mit 100 Dateien darin. Nun möchte ich jede Datei in einen eigenen Ordner verschieben und die Ordner sollen den Dateinamen der darin enthaltenen Datei tragen.

Ist:

Ordner x mit Inhalt:

Datei A Name: Eins.txt

Datei B Name: Zwei.txt

Datei C Name: Drei.txt

usw



Soll:

Ordner x mit Inhalt:

Ordner A Name: Eins
mit Inhalt:
Datei A Name: Eins.txt

Ordner B Name: Zwei
mit Inhalt:
Datei B Name: Zwei.txt

Ordner C Name: Drei
mit Inhalt:
Datei C Name: Drei.txt

Ich hoffe es ist einigermassen verständlich was ich möchte ;)


Es wäre super wenn mir jemand einen Lösungsweg aufzeigen könnte.

Gruß Iceberg
 
Hallo!

Das hier dürfte für deinen Fall reichen

Code:
set the_folder to choose folder

tell application "Finder"
	set the_list to files of the_folder
	repeat with i in the_list
		try
			set theName to name of i
			set n to text -5 thru 1 of theName
			set nf to make new folder at the_folder with properties {name:n}
			move i to nf
			
		end try
	end repeat
end tell

Gruß
 
  • Gefällt mir
Reaktionen: Seruschl, tocotronaut, J S und eine weitere Person
Hat super funktioniert!

Ich bin extrem begeistert ;)

Vielen Dank.
 
Genau sowas hab ich auch grade gesucht. Besten Dank an varuna!!
 
Code:
set n to text -5 thru 1 of theName

varunas Skript hat nur eine Schwäche: es schneidet die letzten vier Zeichen vom Dateinamen ab und macht daraus den Ordnernamen. Bei Dateiendungen mit mehr als drei Zeichen (etwa .docx, .html, .template) führt das zu hässlichen Ordnernamen, die z.B. mit einem Punkt enden.
Wenn man die obige Zeile in varunas Skript durch die folgenden ersetzt, wird sauber der Name ohne Erweiterung zum Ordnernamen:
Code:
set extLength to length of ((name extension of i) as text)
set n to text 1 thru ((length of theName) - extLength - 1) of theName
 
  • Gefällt mir
Reaktionen: tocotronaut
Hallo zusammen.

Ich hole das mal nach oben.

Ich möchte gerne dieses Script nutzen - funktioniert soweit auch.

Bei mir bewegt es allerdings die Dateien nicht, sondern sie werden in den entstandenen Ordner kopiert und sind somit doppelt vorhanden.

Ist das so gewollt oder mache ich etwas falsch?
 
Niemand eine Idee?

Workaround ist übrigens, den Kopiervorgang pro Datei abzubrechen - immerhin werden dann die Ordner erstellt. Verschiebe dann manuell die Dateien in die Ordner...


Hmm - das geht nur über NFS nicht, über AFP funktioniert es, wie es soll. Also ich nehme alles zurück - vielen Dank für das Script!
 
Zuletzt bearbeitet:
Hallo!

Das hier dürfte für deinen Fall reichen

Code:
set the_folder to choose folder

tell application "Finder"
	set the_list to files of the_folder
	repeat with i in the_list
		try
			set theName to name of i
			set n to text -5 thru 1 of theName
			set nf to make new folder at the_folder with properties {name:n}
			move i to nf
			
		end try
	end repeat
end tell

Gruß

hi genau nach so etwas habe ich gesucht.
Das scirpt rennt gerade bei mir und funktioniert super !!!

Vielen DANK
 
Hallo!
Das hier dürfte für deinen Fall reichen
Gruß

Der Hammer!
War jetzt, einige Jahre später, auf der Suche nach einer entsprechenden Lösung und bin nach mehreren nervigen Mini-Apps und schlechten Anleitungen hier gelandet – und so einfach kann es gehen.
Vielen Dank! =)
 
Wow!
Vielen Dank!
Das Script erspart mir Stunden von Arbeit!

Wie müsste ich es umschreiben, dass ich im Ordner das Script nur für einzelne ausgewählte Dateiten laufen lassen kann?

TX
 
Workaround für einzelne dateien:
Die ausgewählten Dateien in einen Ordner verschieben (Finder -> Rechtsklick auf Auswahl -> Neuer Ordner mit Objekten).
Dann das Script auf diesen neuen Ordner laufen lassen - es erstellt die unterordner.
Danach die Unterordner alle wieder eine ebene nach oben Schieben.
 
varunas Skript hat nur eine Schwäche: es schneidet die letzten vier Zeichen vom Dateinamen ab und macht daraus den Ordnernamen. Bei Dateiendungen mit mehr als drei Zeichen (etwa .docx, .html, .template) führt das zu hässlichen Ordnernamen, die z.B. mit einem Punkt enden.
Wenn man die obige Zeile in varunas Skript durch die folgenden ersetzt, wird sauber der Name ohne Erweiterung zum Ordnernamen:
Code:
set extLength to length of ((name extension of i) as text)
set n to text 1 thru ((length of theName) - extLength - 1) of theName
Korrekt... runter legiert auf eine Zeile sieht das so aus:
Code:
tell application "System Events" to set noExtName to text 1 thru ((length of ((name of input) as text)) - (length of ((name extension of input) as text)) - 1) of (name of input as text)
Wem das zu heiss gekocht ist kann auch verwenden:
Code:
tell application "System Events"
    set fName to name of input
    set noExtName to text 1 thru ((length of fName) - (length of ((name extension of input) as text)) - 1) of fName
end tell
 
Zuletzt bearbeitet:
VIELEN DANK FÜR DAS SCRIPT! Hat mir sehr geholfen.
Immer wenn man auf ein neues System Updatet, läuft irgendwas nicht mehr sauber. So auch dieses Script unter Monterey.
Kann mir jemand sagen wie ich es hinbekomme, dass er alle Dateien in das angelegte Verzeichnis verschiebt?
Also Beispiel:
Dateien:
20220205 - 080135.jpeg
20220205 - 080136.jpeg
20220205 - 080137.jpeg
20220203 - 090143.jpeg
20220203 - 090144.jpeg
20220203 - 090155.jpeg

Script angepasst auf:
set n to text -14 thru 1 of theName

Angelegt werden die Ordner:
20220203
20220205

Verschoben wird aber immer nur eine Datei in den neuen Ordner.

Ich bi der Meinung das es ml ging und mit Monterey nicht mehr will. Hat jemand eine Idee? Vielen Dank!
 
Also wenn alle Bilder diese Namensstruktur haben würde ich:
set n to word 1 of theName
schreiben.
Ordner anlegen würde ich mit :
do shell script "mkdir -p " & quoted form of posix path of x

Files listen würde ich mit:
tell application "System Events"
set filelist to files in folder x
end tell
 
Also wenn alle Bilder diese Namensstruktur haben würde ich:
set n to word 1 of theName
schreiben.
Ordner anlegen würde ich mit :
do shell script "mkdir -p " & quoted form of posix path of x

Files listen würde ich mit:
tell application "System Events"
set filelist to files in folder x
end tell
Ich bekomme es nicht hin... kannst Du mir helfen?
hier wäre das Script:
AppleScript:
set the_folder to choose folder

tell application "Finder"
    set the_list to files of the_folder
    repeat with i in the_list
        try
            set theName to name of i
            set n to text -14 thru 1 of theName
            set nf to make new folder at the_folder with properties {name:n}
            move i to nf
            
        end try
    end repeat
end tell

Grosses Danke
 
Vorausgesetzt die Struktur ist wie oben:
20220205 - 080135.jpeg
20220205 - 080136.jpeg
20220205 - 080137.jpeg
20220203 - 090143.jpeg
20220203 - 090144.jpeg
20220203 - 090155.jpeg

Code:
set src to choose folder
tell application "Finder"
    set fi_list to files of src
    repeat with x in fi_list
        set var to name of x
        set foName to word 1 of var
        try
            set nf to make new folder at src with properties {name:foName}
        on error
            set nf to src & foName as string as alias
        end try
        move x to nf
    end repeat
end tell
 
Update:
Code:
set src to choose folder
tell application "Finder"
    set fiList to files of src
    repeat with x in fiList
        set foName to word 1 of (name of x as string)
        try
            set nf to make new folder at src with properties {name:foName}
        on error
            set nf to src & foName as string as alias
        end try
        move x to nf
    end repeat
end tell

"move x to nf" gibt einen error wenn schon ein gleichnamiges File dort sitzt. Kann man aber abfangen mit einem "try" Block oder "with replacing"

Ok, ok.. nicht alle gleichzeitig rumjammern. Hier das vollständige Script:
Code:
set src to choose folder
tell application "Finder"
    set fiList to files of src
    repeat with x in fiList
        set foName to word 1 of (name of x as string)
        try
            set nf to make new folder at src with properties {name:foName}
        on error
            set nf to src & foName as string as alias
        end try
        try
            move x to nf without replacing
        on error errstrg
            activate
            display alert "Replacing: " & quoted form of (name of x as string) & " ?" message errstrg & return & quoted form of POSIX path of src buttons {"Cancel", "OK"} cancel button 1 default button 1 as critical
            try
                move x to nf with replacing
            on error errstrg
                display alert errstrg as critical
            end try
        end try
    end repeat
end tell
 
Zuletzt bearbeitet:
man man man... ganz herzlichen Dank! Das hilft mir sehr!
 
Zurück
Oben Unten