sdim dir,1024
dir=curdir ;デフォルトはカレントディレクトリ
pos 0,0 : input dir,winx-80,20,1024 ;検索ディレクトリ取得ボックス
objsize 80,20 : pos winx-80,0 : button "検索",*find ;検索開始ボタン
files=""
objsize winx,winy-20 : pos 0,20 : listbox dummy,0,files ;リスト表示リストボックス
stop
*find ;検索開始
title "検索中…"
sdim files,64 ;変数初期化
;指定ディレクトリ以下の全ディレクトリを取得
directrys="" ;全ディレクトリを格納する変数
notesel directrys
noteadd "" ;親ディレクトリの分
repeat
list="" ;サブディレクトリリスト
directry=""
noteget directry,cnt ;調べるディレクトリ
dirlist list,dir+"\\"+directry+"\\*.*",5 ;ディレクトリリストを取得
dirnum=stat
byte=0
repeat dirnum
getstr dirname,list,byte ;取得したリストから1行取得
byte+strsize ;1行分進める
if directry="" { ;親ディレクトリはこっち
noteadd dirname
} else { ;それ以外
noteadd directry+"\\"+dirname
}
loop
notemax max
if max-1=cnt : break ;全てのディレクトリを調べたら終了
await
loop
;それぞれのディレクトリからファイルをリストアップ
notesel files ;ディレクトリの方はもう必要ないので
byte=0
repeat max
getstr dirname,directrys,byte
byte+strsize
dirlist list,dir+"\\"+dirname+"\\*.*",1
byte2=0
repeat stat
getstr filename,list,byte2
byte2+strsize
if dirname="" {
noteadd filename
} else {
noteadd dirname+"\\"+filename
}
loop
loop
objprm 2,files ;リストボックスに更新
title "検索終了"
stop
|