Upon examining the nice (recursive) directory walking script:
file007
at
http://www.sonsothunder.com/index2.htm?http://www.sonsothunder.com/ devres/revolution/revolution.htm
But I watched it bump into the recursion-limit wall.
Following is a non recursive version of this script.
Although it is non recursive be careful not to unleash it (without filters) on for example the complete Mac OS X volume or you will be tied up for quite a while seen the amount of files and directories there.
First is a bare bones script. Next some additions.
on mouseUp put "" into fld "Result" answer folder "Pick a folder you want to walk:" if it = "" then exit mouseUp put it & "/" into tMainFolder put the directory into tOrigDir directoryWalk tMainFolder set the directory to tOrigDir end mouseUp
on directoryWalk tDir
set the itemDel to "/"
put "" into tDirlist
repeat
if tDir = empty then exit repeat
set the directory to tDir
put tDir & cr after tHierList
if the hilite of btn "theFiles" then
put the files into temp
repeat for each line x in temp
put tDir & x & cr after tHierList
end repeat
end if
put line 2 to -1 of the folders into tTempDirList
repeat for each line x in tTempDirList
put tDir & x & "/" & cr after tDirList
end repeat
put line 1 of tDirList into tDir
delete line 1 of tDirlist
put "" into tTempDirList
end repeat
sort tHierlist
put tHierlist into fld "result"
end directoryWalkNow for some condiment. Adapt to your own taste and circumstances:
on mouseUp put "" into fld "Result" answer folder "Pick a folder you want to walk:" if it = "" then exit mouseUp put it & "/" into tMainFolder put the directory into tOrigDir directoryWalk tMainFolder set the directory to tOrigDir end mouseUp
on directoryWalk tDir
set the itemDel to "/"
put "" into tDirlist
#### to constrain the examination depth of directories if needed
get the label of btn "depth" ### option styled btn with none,1,2.....xx as content
if it is not a number or it = empty then put empty into tMaxDepth
else put it + the number of items in tDir into tMaxDepth
repeat
if tDir = empty then exit repeat
set the directory to tDir
put tDir & cr after tHierList #### directories with or without the files
if the hilite of btn "theFiles" then
put the files into temp
repeat for each line x in temp
put tDir & x & cr after tHierList
end repeat
end if put line 2 to -1 of the folders into tTempDirList
repeat for each line x in tTempDirList
put tDir & x & "/" & cr after tDirList
end repeat
put line 1 of tDirList into tDir#### check part for constraining the depth of directories to be examined
if tMaxDepth <> empty and the number of items in tDir = tMaxDepth then exit repeat
delete line 1 of tDirlist
put "" into tTempDirList
end repeat
sort tHierlist
if the hilite of btn "ShowHierarchy" then ShowHierarchy tHierlist
else put tHierlist into fld "result"
end directoryWalkon ShowHierarchy @x
if the hilite of btn "theTabs" then ##### tabs or spaces
put tab into tIndentContainer
put tab into tExtraIndent
put 1 into tFactor
else
put space into tIndentContainer
put " " into tExtraIndent
put 3 into tFactor
end if
#### make a string of 128 chars
repeat 7
put tIndentContainer after tIndentContainer
end repeat
#### choose the char you like as indicator
if the hilite of btn "dirMarker" then put "•" into tdirMarker
else put "" into tdirMarker
set the itemdelimiter to "/"
put the number of items in line 1 of x into tDepth
put tDepth into tPrevDepth
repeat for each line i in x
get the number of items in i
if last char of i = "/" or it <= tPrevDepth then
put it into tPrevDepth
put "" into tIndent
put char 1 to (( it - tDepth) * tFactor) of tIndentContainer into tIndent
if last char of i = "/" then put tIndent & item -1 of i && tdirMarker & cr after tList
else put tIndent & item -1 of i & cr after tList
else put tIndent& tExtraIndent & item -1 of i & cr after tList
end repeat
put tList into fld "result"
#### if tab delimited it can be used in menu buttons
if tExtraIndent = tab then put tList into btn "theMenu"
end ShowHierarchy
Have a nice day, WA _______________________________________________ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
