指定したフォルダ
Posted: 2006年5月19日(金) 20:25
指定したフォルダの中に入っているファイル名を取得するにはどのような関数を使えばいいのでしょうか教えてください。
コード: 全て選択
#console
Dim File as WIN32_FIND_DATA
Dim SearchHandle As HANDLE
Dim SearchFile As String
Dim Stetas As Long
Dim I As Long
Dim HitName As String
SearchFile="C:\"
SearchFile=SearchFile+"*"
SearchHandle=FindFirstFile(SearchFile,File)
Do
If File.dwFileAttributes<>FILE_ATTRIBUTE_DIRECTORY then
HitName=File.cFileName
Print HitName
End If
Stetas=FindNextFile(SearchHandle,File)
If Stetas=FALSE then Exit Do
Loop
FindClose(SearchHandle)
Sleep(INFINITE)
N88BASICモードでサンプルを書きます。> 指定したフォルダの中に入っているファイル名を取得するにはどのような関数を使えばいいのでしょうか教えてください。
コード: 全て選択
#N88BASIC
Dim strPath As String
Dim lpFindFildData As WIN32_FIND_DATA
Dim hFind As HANDLE
Dim pMark As BytePtr
Dim strBuf As String
strPath = "フォルダのパス。" '例:「C:\ActiveBasic\Test」
'以下、フォルダ内のファイル名(フォルダは除く)をフルパスで取得。
strPath = strPath + "\*" '[*]は「あらゆるもの」の意味。ワイルドカード。
hFind = FindFirstFile( StrPtr(strPath), lpFindFildData ) '検索を開始。
If( INVALID_HANDLE_VALUE=hFind )Then
End '取得に失敗。
EndIf
Do
'ディレクトリでないときの処理。
If( lpFindFildData.dwFileAttributes<>FILE_ATTRIBUTE_DIRECTORY )Then
strBuf = lpFindFildData.cFileName '検索されたファイルのフルパスをstrBufに代入
Print strBuf '検索成功を確認。
'ファイル名のみを抽出
pMark = lstrrchr( lpFindFildData.cFileName, 92 ) '92=[\]
strBuf = pMark
Print strBuf '検索成功を確認。
EndIf
Loop While( TRUE=FindNextFile( hFind, lpFindFildData ) )'次を検索。失敗したらループを抜ける。
FindClose( hFind ) '検索の終了処理(ハンドルをクローズ)。
Sleep( 5000 )
End
コード: 全て選択
Declare Function _lstrrchr Lib "shlwapi" Alias "StrRChrIA" _
( pBufStart As BytePtr, _
pBufEnd As BytePtr, _
bSearch2 As Byte ) As BytePtr
Function lstrrchr( pBuffer1 As BytePtr, bSearch2 As Byte ) As BytePtr
lstrrchr = _lstrrchr( pBuffer1, _
pBuffer1 + lstrlen(pBuffer1), _
bSearch2 )
EndFunction