I don't have a lot of time, so here's an example of how to do it.
Rem Project: Convert 3ds to dbo
Rem Created: Wednesday, December 09, 2009
Rem Created by: Matt Latham (Hawkblood)
Rem ***** Main Source File *****
set display mode 640,480,16
sync on
sync rate 0
sync
dim FileNames$(255) as string
dim ListPosition(255) as integer
dim StType(255) as integer
NumberInList as integer
SaveFile as integer =0
SaveFileName$ as string=""
Object1=1
cd "c:\devilish\meshes"
CheckDirectory:
cls
gosub CreateFileList
for t=1 to CLQuantity
if find first char$(FileNames$(t),".")<2
ListPosition(NumberInList)=t
StType(NumberInList)=0
NumberInList=NumberInList+1
endif
if FIND SUB STRING$(FileNames$(t),".3DS")>-1 or FIND SUB STRING$(FileNames$(t),".X")>-1 or FIND SUB STRING$(FileNames$(t),".MDL")>-1 or FIND SUB STRING$(FileNames$(t),".MD2")>-1 or FIND SUB STRING$(FileNames$(t),".MD3")>-1
ListPosition(NumberInList)=t
StType(NumberInList)=1
NumberInList=NumberInList+1
endif
next t
startdir=0
ShowDir:
cls
enddir=NumberInList-1
if (enddir-startdir)>20 then enddir=startdir+20
SET WINDOW TITLE GET DIR$()
for t=startdir to enddir
if StType(t)=0 then print "["+FileNames$(ListPosition(t))+"]"
if StType(t)=1 then print FileNames$(ListPosition(t))
next t
if SaveFile=1 then TEXT 0,432,"Save File As (no extension): "+SaveFileName$
if startdir>0 then TEXT 0,464,"{PREVIOUS}"
if enddir<(NumberInList-1) then TEXT 360,464,"{NEXT}"
sync
do
if MOUSECLICK()=1
while MOUSECLICK()=1
endwhile
MY=MOUSEY()/15
if (MY+startdir)<=enddir and MY<=20
if StType(MY+startdir)=0
cd FileNames$(ListPosition(MY+startdir))
goto CheckDirectory
endif
if StType(MY+startdir)=1
cls
print "***************** LOAD IN PROGRESS *****************"
print "This may take some time depending on mesh complexity"
sync
load object FileNames$(ListPosition(MY+startdir)),Object1
SaveFileName$=FIRST TOKEN$(FileNames$(ListPosition(MY+startdir)),".")
SaveFile=1
goto ShowDir
endif
endif
if MY>20
if MOUSEX()>360 and enddir<NumberInList-1
startdir=startdir+21
goto ShowDir
endif
if MOUSEX()<360 and startdir>0
startdir=startdir-21
goto ShowDir
endif
endif
endif
if SaveFile=1
remstart
SET CURSOR 0,432
while GET KEY STATE(13)>-1
input "Save File As (no extension): ",SaveFileName$
endwhile
SaveFileName$=SaveFileName$+".dbo"
save object SaveFileName$,Object1
delete object Object1
SaveFile=0
SaveFileName$=""
goto ShowDir
remend
TEXT 0,432,"Save File As (no extension): "+SaveFileName$
` for k=65 to 90
for k=31 to 255
if GET KEY STATE(k)<0
while GET KEY STATE(k)<0
endwhile
SaveFileName$=SaveFileName$+chr$(k)
goto ShowDir
endif
next k
if GET KEY STATE(8)<0 `8=BACKSPACE
while GET KEY STATE(8)<0
endwhile
L=len(SaveFileName$)-1
Old$=SaveFileName$
SaveFileName$=""
for s=0 to L
SaveFileName$=SaveFileName$+mid$(Old$,s)
next s
goto ShowDir
endif
if GET KEY STATE(13)<0 `8=ENTER
while GET KEY STATE(13)<0
endwhile
if file exist (SaveFileName$+".dbo")=1
delete file SaveFileName$+".dbo"
endif
SaveFileName$=SaveFileName$+".dbo"
save object SaveFileName$,Object1
delete object Object1
SaveFile=0
SaveFileName$=""
goto ShowDir
endif
endif
loop
if OBJECT EXIST(Object1)=1 then delete object Object1
undim FileNames$()
undim ListPosition()
undim StType()
end
CreateFileList:
NumberInList=0
perform checklist for files
CLQuantity=checklist quantity()
for t=1 to checklist quantity()
FileNames$(t)=UPPER$(checklist string$(t))
next t
`_open_save("Text Documents ( *.txt )|*.txt|All Files ( *.* )|*.*|","C:\","Open ~ Test","txt",1)
return
The fastest code is the code never written.