[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(DTPtechNote:183) Re: cat_it
とりあえず、System.osaxに逃げました。
ファイル名のソートはASでやりました。
do shell scriptのばかやろ〜のための暫定解
(*
ドラッグ&ドロップしたファイルをsortしてから結合します
飯森さんのsystem.osaxが必要です。
http://www.bekkoame.ne.jp/~iimori/index.html
(c)2002 市川せうぞー www.seuzo,jp
*)
on open dropList
set new_file to (choose file name with prompt "Where do you save new file?")
set new_file to quoted form of POSIX path of new_file --posixPathだと存在しないファイルはエラーになる
set fileList to {}
repeat with aFile in dropList
set aPath to posixPath aFile with quotes
set end of fileList to (" " & aPath)
end repeat
set fileList to my ShellSort(0, fileList)
system ("cat" & (fileList as text) & " > " & new_file) --do shell scriptだとエラーになることがある
end open
--シェルソートサブルーチン(UpDown −> 0:昇順、1:降順)
to ShellSort(UpDown, myList)
set N to length of myList
if N > 1 then
set k to 1
set h to 1
repeat until h > N / 9
set k to h
set h to (h * 3 + 1)
end repeat
repeat until k = 0
repeat with i from k + 1 to N
set j to i
if UpDown = 0 then --昇順
repeat while ((j > k) and ((item (j - k) of myList) > (item j of myList)))
set Temp to item j of myList
set item j of myList to item (j - k) of myList
set item (j - k) of myList to Temp
set j to j - k
end repeat
else --降順
repeat while ((j > k) and ((item (j - k) of myList) < (item j of myList)))
set Temp to item j of myList
set item j of myList to item (j - k) of myList
set item (j - k) of myList to Temp
set j to j - k
end repeat
end if
end repeat
set k to ((k / 3) div 1)
end repeat
end if
return myList
end ShellSort