[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