Erstellen mehrerer Ordner mit duchnummerierter Endung (01 bis xx)

double-v

double-v

Mitglied
Thread Starter
Dabei seit
14.09.2007
Beiträge
46
Reaktionspunkte
4
Und wieder ein neues Problem, das wie folgt aussieht:

ich möchte mehrere Ordner erstellen, die am Ende des Namens durchnummeriert sein sollen, z.B.

Erstelle 10 Ordner mit dem Namen "Ordner" (wobei ich die Anzahl und den Namen gerne in einem Dialog vorgeben möchte) und diese 10 Ordner sollen dann im Ordnernamen noch durchnummeriert werden, also

Ordner01
Ordner02
...
...
Ordner10


Anschließend sollen in jeden dieser Ordner einige vorgefertigte Dateien hinein kopiert werden.

Ein paar Ansätze hab ich schon, aber ich krieg das durchnummerieren der Ordner einfach net gebacken :confused:
 
Guck Dir mal den Automator und die Aktion "Finder Objekt umbenennen" an :)
Denke, damit dürfte Dir vorerst geholfen werden.

Das mit dem Kopieren musst Du näher erläutern :)
 
Hallo,

zum Beispiel:

Code:
tell application "Finder"
	
	-- Wo sollen die Ordner erzeugt werden?
	set ordnerAuswahl to choose folder
	display dialog "Ordnername:" default answer "Ordner"
	
	-- wie sollen die Ordner heißen?
	set ordnerName to the text returned of the result
	
	-- Wie viele Ordner sollen angelegt werden?
	display dialog "Anzahl Ordner:" default answer "3"
	set ordnerZaehler to (text returned of the result) as integer
	
	-- Schleife, um die Ordner anzulegen
	repeat with i from 1 to ordnerZaehler by 1
		make new folder at (ordnerAuswahl) with properties {name:((ordnerName & i) as string)}
	end repeat
	
end tell

Lass mal laufen :)

Viele Grüße
 
Ich nutze gerne den Unterbau von OS X für solche Sachen, weil das oft (aber nicht immer) viel schneller ist als reines AppleScript.

Hier ein Vorschlag für die Erstellung der Ordner, AppleScript-typisch ist dabei die Numerierung der Ordner (und auch ganz anders und performanter lösbar, aber das ist nicht das Thema):

Code:
property folderName : "Test"
property startNr : 1
property stopNr : 9
property parentFolder : "~/Desktop/"

set nrLength to (count (stopNr as string))

repeat with i from startNr to stopNr
	do shell script ("mkdir" & space & ((parentFolder & folderName & padZeros(i, nrLength)) as string))
end repeat

to padZeros(thisNumber, thisCount)
	copy (thisNumber as string) to thisString
	repeat while ((count thisString) < thisCount)
		copy ("0" & thisString) to thisString
	end repeat
	return thisString
end padZeros

Richtig spannend wird es dann mit den einzufügenden Ordnern und Daten. Das könnte eventuell auch mit "do shell script" gemacht werden und dadurch sehr schnell werden.

Fragen: Was willst Du eigentlich tun, und was willst Du standardmäßig in die Ordner hineinkopieren?
 
Zuletzt bearbeitet:
Danke, das Script von little ist perfekt. Ich hab's zwar in der Zwischenzeit selber lösen können, aber wohl mal wieder viel zu kompliziert und umständlich :hamma:

Code:
tell application "Finder"       
       set folderName to display dialog "Bezeichnung Ordners:" default answer "" 
       set theButtonPressed to button returned of the result
       set textEnteredFolderName to text returned of folderName
       make new folder at desktop with properties {name:textEnteredFolderName}
               
       set Anzahl to display dialog "Anzahl der Ordner:" default answer "" 
       set theButtonPressed to button returned of the result
       set textEnteredAnzahl to text returned of Anzahl
       
       repeat textEnteredAnzahl times
               make new folder at folder textEnteredFolderName of desktop
       end repeat
       
       set allItems to every item of folder textEnteredFolderName of desktop
       set c to count of allItems

       repeat with i from 1 to c
               set anItem to item i of allItems
               set name of anItem to textEnteredFolderName & i) as string
       end repeat
              
end tell

... aber immerhin, es lief :dance: Eine Frage hab ich allerdings noch dazu - die Ordner werden ja nun beginnend mit 1 nummeriert. Gibt es auch ne Möglichkeit, die Nummerierung mit 01 zu starten?



So weit, so gut - jetzt hab ich einen Ordner mit x erstellten Unterordnern, die entsprechend ihrer Anzahl durchnummeriert sind. Jetzt soll der nächste Teil folgen :hum: :

In einem festen Ordner auf dem Schreibtisch liegen 3 Ordner Namens VORAB, AUSWAHL und END sowie eine iview-Datei. Diese 4 Objekte sollen nun alle in JEDEN der x erstellten Ordner kopiert werden UND zusätzlich die iview-Datei mit dem Namen des jeweiligen Ordners, in dem sie liegt, benannt werden. Kann man das evtl. irgendwie umsetzen? :confused:

Ginge der copy-Vorgang evtl. mit dem Schnipsel hier oder verzapf ich jetzt totalen Mist?

Code:
 set allItems to every item of folder Ordner of desktop
       set c to count of allItems
       repeat with i from 1 to c
               set anItem to item i of allItems
               copy folder AUSWAHL of desktop to anItem 
       end repeat
 
Hallo,

erledige das in einem Rutsch. Im Nachhinein wieder die Namen auszulesen ist aufwändiger.

Code:
tell application "Finder"
	
	-- Wo sollen die Ordner erzeugt werden?
	set ordnerAuswahl to choose folder
	display dialog "Ordnername:" default answer "Ordner"
	
	-- wie sollen die Ordner heißen?
	set ordnerName to the text returned of the result
	
	-- Wie viele Ordner sollen angelegt werden?
	display dialog "Anzahl Ordner:" default answer "3"
	set ordnerZaehler to (text returned of the result) as integer
	
	-- alle Inhalte des gewünschten Ordners
	set gesamtInhalt to every item of folder "Mac OS X:Users:tiborandre:Desktop:CopyOrdner:"
	set dateiName to "test.txt"
	
	-- Schleife, um die Ordner anzulegen
	repeat with i from 1 to ordnerZaehler by 1
		make new folder at (ordnerAuswahl) with properties {name:((ordnerName & i) as string)}
		duplicate (every item of gesamtInhalt) to folder (ordnerName & i)
		set name of file ((ordnerAuswahl & ordnerName & i & ":" & dateiName) as string) to (ordnerName & i) & ".txt"
	end repeat
	
end tell

- Ergänze noch die Schleife mit einem TRY-Block
- Pfad anpassen
- Dateinamen anpassen

Viele Grüße
 
double_v schrieb:
Gibt es auch ne Möglichkeit, die Nummerierung mit 01 zu starten?

Einfach den Code von little_pixel wie folgt ergänzen:
PHP:
if i < 10 then
set OrdnerNummer to (characters 2 thru 3 of (i+100)) as string
else
set OrdnerNummer to i
end if
set name of file ((ordnerAuswahl & ordnerName & i & ":" & dateiName) as string) to (ordnerName & OrdnerNummer) & ".txt"

Good scripting
Farid
 
Wahnsinn, wie Ihr das immer so aus dem Ärmel schüttelt :) - ohne Euch würd ich das net so gut realisieren können. Ich hab einfach zuwenig ahnung von applescript bisher. Die Scripts erleichtern mir meine Arbeit total. Aber jetz genug mit dem Geschleime ;)


Wenn ich den Teil von Farid einbaue
Code:
set OrdnerNummer to (characters 2 thru 3 of (i+100)) as string
bekomm ich ne Fehlermeldung, dass die characters nicht in string umgewandelt werden können. Was genau bedeutet das eigentlich?


Ansonsten sieht's auf meine Bedürfnisse angepasst bisher so aus:
Code:
run FolderMaker
display dialog "Die Ordner wurden erstellt!" buttons {"Cancel", "Neuer Ordner"} default button 1
set theButtonPressed to button returned of the result
if the theButtonPressed is "Neuen Ordner erstellen" then
       run FolderMaker
end if


__________________________________________________________________________________________________________________



script FolderMaker
       tell application "Finder"
	    try
               set ordnerAuswahl to (path to "desk" as string) & "Fotoreise:" as alias
               display dialog "Ordnerbezeichung:" default answer ""
               set ordnerName to the text returned of the result
            on error
               [B][COLOR="Red"]--repeat until[/COLOR][/B]
               display dialog "Dieser Ordner existiert bereits!" & return & "Bitte wählen Sie eine andere Bezeichung:" default answer ""
               set ordnerName to the text returned of the result
               [B][COLOR="#ff0000"]--end repeat[/COLOR][/B]
            end try

               make new folder at ordnerAuswahl with properties {name:ordnerName}
               
               display dialog "Anzahl der Ordner:" default answer ""
               set ordnerZaehler to (text returned of the result) as integer
               
               set ordner to (path to "desk" as string) & "Fotoreise:" & ordnerName & ":" as alias
               set gesamtInhalt to every item of folder [COLOR="#ff0000"]"Macintosh_HD:Users:steweb:desktop:Vorlagen:"[/COLOR]
               set dateiname to "iview.ivc"
               
               repeat with i from 1 to ordnerZaehler by 1
                       make new folder at (ordner) with properties {name:((ordnerName & "-A0" & i) as string)}
                       duplicate (every item of gesamtInhalt) to folder (ordnerName & "-A0" & i) of folder (ordner)
                       set name of file ((ordner & ordnerName & "-A" & i & ":" & dateiname) as string) to (ordnerName & "-A0" & i) & ".ivc"
               end repeat
       end tell
end script

... nur an den rot markierten Stellen hätt ich noch a bisserl Hilfe nötig :eek:.
Zum einen hab ich den error-Block eingebaut, um die Eingabe schon existierender Ordnernamen abzufangen. Jetzt soll der error-Block wiederholt werden, falls erneut ein solcher Ordername eingegeben wird, und zwar solange, bis eben eine noch nicht vergebene Bezeichnung verwendet wird - nur mit welcher Anweisung kann ich sowas vorgeben?

Zum anderen hab ich versucht, das Script so zu formen, dass es bei verschiedenen Usern einsetzbar ist und daher (path to "desk" as string) verwendet. Nur bei der Zeile funktioniert das aus irgend einem Grund nicht.
Code:
set gesamtInhalt to every item of folder "Macintosh_HD:Users:steweb:desktop:Vorlagen:"


Herzlichen Dank schon mal!
 
Zuletzt bearbeitet:
Hallo,

Code:
set pfad to (path to desktop folder as string) & "MeinOrdner:"
set gesamtInhalt to every item of folder pfad

--> DesktopPfad

Code:
repeat
	try
		display dialog "Hallo"
		nichtDefiniert
		exit repeat
	on error
		display dialog "...und noch einmal!"
	end try
end repeat
Endlosschleife, bis die Eingaben stimmen. Bitte anpassen.

Viele Grüße
 
Wenn ich den Teil von Farid einbaue bekomm ich ne Fehlermeldung, dass die characters nicht in string umgewandelt werden können. Was genau bedeutet das eigentlich?

Sorry, die Zeile war am PC gescriptet :rolleyes:
So müßte es klappen:
PHP:
set OrdnerNummer to (characters 2 thru 3 of (i + 100 as string)) as string

Good scripting
Farid
 
Zurück
Oben Unten