Hallo Willem,
gar nicht so einfach, Deine Aufgabe! Aber ich glaube, dass folgendes Script Deine Erwartungen erfüllt. Es ist ziemlich lang geworden, weil verschiedene Tests zwingend eingefügt werden müssen. Dazu habe ich in meiner bekannt anwenderfreundlichen Art versucht, dass bei Tipp-Fehlern nicht abgebrochen, sondern der Dialog erneut gezeigt wird. Mit der letzten Eingabe, welche dann leicht korrigiert werden kann.
Was nicht getestet wird: ob der Wert der Startseite nicht grösser ist als jener der Endseite (in diesem Fall geschieht … nichts). Und auch ob der Wert der Startseite ungerade und jener der Endseite gerade ist. Im übrigen ist der Code nicht kommentiert, weil er – glaube ich – selbsterklärend ist. Aber wenn Du etwas nicht verstehst, dann nur fragen.
---
set aName to ""
set okay to 0
repeat while okay = 0
set aName to text returned of (display dialog "Name" default answer aName)
set okay to 1
if aName contains ":" then
display dialog "Der Name darf
keinen Doppelpunkt enthalten." buttons "OK" default button 1 with icon 2
set okay to 0
end if
if (count of aName) > 24 then
display dialog "Der Name ist zu lang.
Bitte nicht mehr als 24 Zeichen." buttons "OK" default button 1 with icon 2
set okay to 0
end if
end repeat
set aRange to ""
set nPages to ""
set okay to 0
repeat while okay = 0
set nPages to text returned of (display dialog ¬
"Erste und letzte Seite (Beispiel: 1-12)" default answer nPages)
set okay to 1
repeat with i from 1 to count nPages
if character i of nPages is in "0123456789" then
set aRange to aRange & character i of nPages
else
set aRange to aRange & " "
end if
end repeat
try
set startPage to (word 1 of aRange) as integer
set endPage to (word 2 of aRange) as integer
on error
display dialog "Bitte die Start- und die Schluss-Seite
eingeben." buttons "OK" default button 1 with icon 2
set okay to 0
end try
end repeat
set targetFolder to (choose folder with prompt "Zielordner wählen") as string
repeat with i from startPage to endPage
if i = startPage or i = endPage then
set folderName to aName & "s" & text -3 thru -1 of ("00" & i)
makeFolder(targetFolder, folderName)
else
if i mod 2 = 0 then
set folderName to aName & "s" & text -3 thru -1 of ("00" & i) & text -3 thru -1 of ("00" & (i + 1))
makeFolder(targetFolder, folderName)
end if
end if
end repeat
on makeFolder(targetFolder, folderName)
set folderExists to false
try
alias (targetFolder & folderName & ":")
set folderExists to true
end try
if not folderExists then
tell application "Finder" to make new folder at folder targetFolder with properties {name}
else
display dialog "Der Ordner »" & folderName & "« existiert schon." with icon 2
end if
end makeFolder
---
Ganz am Schluss wird getestet, ob der Ordner schon existiert. Wenn ja, wird ein Dialog gezeigt. Ein Klick auf "Abbruch" beendet die Ausführung, beim Klick auf "OK" wird zum nächsten Ordner übergegangen.
Hans Haesler <hsa@ringier.ch>
als Antwort auf: [#418485]