HB_DirScan
Scan a directory tree and build a files and folders list
Syntax
hb_DirScan(<cPath>, [<cFileMask>], [<cAttr>]) --> <aFiles>
Arguments
<cPath> : A character string holding the drive, directory and/or file specification to retrieve information for. Default is current directory.
<cFileMask> : For filter files to add to the list, (can include wild card characters). Default is ‘*.*’.
<cAttr> : A character string holding file attributes can be specified. Information about files carrying these attributes is retrieved. One or more characters of the table below can be included in . For add directories to the list add ‘D’ to .
Attributes for HB_DirScan() :
Attribute Meaning
--------- -------------------------
A Archive
D Directories
H Hidden files
R Read-only
S System files
Returns
<aFiles> : A two-dimensional array of five columns; holding information about files in the and the that match . An empty array, if no matched file found or an error occured.
Description
The HB_DirScan() function is similair to the Directory(). The first difference is that HB_DirScan() scans recursively all sub- directories in the directory specified with. And second difference is Directory() don’t requires parameter, instead this info included in the .
The result is a two dimensional array . Columns can be accessed using #define constants from the DIRECTRY.CH file.
Constants for the HB_DirScan() array :
Symbolic Numeric
Constant Value Meaning Data Type
-------- ----- ------------------- --------------
F_NAME 1 File name Character
F_SIZE 2 File size in bytes Numeric
F_DATE 3 File date Date
F_TIME 4 File time Character
F_ATTR 5 File attributes Character
Files
Header: Directry.ch
Example
Assuming this directory tree and files exist :
C:\
| temp D
+ ---- + Dir1 D
| doc1.docx F
| test1.bat F
| test1.txt F
+ Dir2 D
| doc2.docx F
| test2.bat F
| test2.txt F
+ run.bat F
test.bat F
test.exe F
PROC TestDScan()
LOCAL aFFList := HB_DirScan( "C:\TEMP" )
LOCAL x1Row
FOR EACH x1Row IN aFFList
? PAD( x1Row[ 1 ], 23 ),; // Name
TRAN( x1Row[ 2 ], '999,999,999,999' ),; // Size
x1Row[ 3 ],; // Date
x1Row[ 4 ],; // Time
x1Row[ 5 ] // Attributes
NEXT x1Row
RETU // TestDScan()
Result :
Dir1\doc1.docx 14,757 26.02.2014 00:04:27 A
Dir1\test1.bat 54 24.02.2014 00:54:01 A
Dir1\test1.txt 54 24.02.2014 00:54:01 A
Dir2\doc2.docx 14,757 26.02.2014 00:04:27 A
Dir2\test2.bat 54 24.02.2014 00:54:01 A
Dir2\test2.txt 54 24.02.2014 00:54:01 A
run.bat 24 27.02.2014 01:12:28 A
test.bat 54 24.02.2014 00:54:01 A
test.exe 1,413,285 27.02.2014 01:10:36 A
˜˜˜˜˜˜˜
HB_DirScan( "C:\TEMP\*.txt" ) <- Incorrect call !
˜˜˜˜˜˜˜
HB_DirScan( "C:\TEMP\", "*.txt" )
Result :
Dir1\test1.txt 54 24.02.2014 00:54:01 A
Dir2\test2.txt 54 24.02.2014 00:54:01 A
Seealso
Directory(), File(), FileSeek(), HB_FileMatch(), HB_FileExists(), HB_FNameExists(), HB_DirExists(), FileFindXxxx