Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Dir command and full file names
Message
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00756815
Message ID:
00756973
Views:
9
Steve,

To add to Sergey's answer: if you want to create a list of all files in all directories and subdirectories, you would need to use a recursion. There was a long thread couple of years ago between David Frankenbach and the late Ed Rauh...

Here are some codes from that thread:
********************************************************************
*  Description.......: GetAllFiles - builds a list of all files in start directory and subdirectories
*  Calling Samples...: ?GetAllFiles('\Redp\Appl','SCX')
*  Parameter List....: pcStartDir, pcFileExt
*  Created by........: Ed Rauh
*  Modified by.......: Nadya Nosonovsky 10/18/2000 11:18:39 AM
********************************************************************
* Scripting.FileSystemObject example of recursive file list build - Ed Rauh
lparameters pcStartDir, pcFileExt
* pcStartDir - top directory to start from
* pcFileExt - only files with this extension would be added to the list,
*             leave blank for all file extensions

if empty(m.pcStartDir)
	pcStartDir='c:\' && Get list of files in the whole local drive
endif

local ltStartFSO
ltStartFSO = datetime()
private pnTotNumberOfFiles
pnTotNumberOfFiles=0
create cursor filesFSO ( cFilename c(100), nSize n(10), dMod d )
oFSO = createobject('Scripting.FileSystemObject')

=RecurseFolderFSO(oFSO.GetFolder(pcStartDir))
? datetime() - ltStartFSO, pnTotNumberOfFiles

index on nSize tag nSize
browse
****************************************************
function RecurseFolderFSO
lparameter toFolderObject
with toFolderObject
	for each oFile in .files
		with oFile
			if empty(pcFileExt) or justext(.path)==pcFileExt
				insert into filesFSO ;
					values (.path, .size, .DateLastModified )
				pnTotNumberOfFiles=pnTotNumberOfFiles+1
			endif
		endwith
	endfor
	for each oSubFolder in .SubFolders
		RecurseFolderFSO(oSubFolder)
	endfor
endwith
toFolderObject = null
return
********************************************************************************
*  Description.......: GetAllFiles1 - builds list of all files in directory tree
*                    : uses Adir recursive call
*  Calling Samples...:
*  Parameter List....: tcStartDir, tcFileExt
*  Created by........: David Frankenbach
*  Modified by.......: 
********************************************************************************
* ADIR() method of recursively building the file list - Dave Frankenbach
lparameters tcStartDir, tcFileExt
* tcStartDir - top directory to start from
* tcFileExt - only files with this extension would be added to the list,
*             leave blank for all file extensions

* Both parameters should be character type, check it first
**************************************************************************
if empty(tcStartDir) or vartype(tcStartDir)<>'C'
	tcStartDir='c:\' && Get list of files in the whole local drive
else
	tcStartDir=addbs(tcStartDir)
endif
if empty(tcFileExt) or vartype(tcFileExt)<>'C'
	tcFileExt='' 
endif

local ltStart
ltStart = datetime()
local lnTotNumberOfFiles

create cursor curFilesADIR (cFilename c(100), nSize n(10), dMod d, Flag L)
=RecurseFolder(tcStartDir, tcFileExt) && Call recursive procedure
lnTotNumberOfFiles=reccount(curFilesAdir)
? datetime() - ltStart, lnTotNumberOfFiles

index on upper(justfname(cFileName)) tag cFileName
browse nowait

function RecurseFolder
lparameters lcDir, lcFileExt
local i , n, laFiles[1]

n = adir(laFiles, lcDir + '*.*', "shd" )

for i = 1 to n
	if (left(laFiles[i,1], 1) != '.' )
		if ("D" $ laFiles[i,5] )
			RecurseFolder(lcDir + laFiles[i,1] + "\" )
		else
			if empty(lcFileExt) or justext(laFiles[i,1])==lcFileExt
                    llFlag=.f. 
					insert into curFilesADIR ;
					values( lcDir + laFiles[i,1], laFiles[i,2], laFiles[i,3],llFlag )
			endif
		endif
	endif
endfor
return
>How do I get the context of say the c:\ directory, say all files, into a text file using the adir() command? I have never used it. Alternatively, is there a way to make the following, stop asking me to select a folder each time I run it?
>
> local oFSO, oFolder, oFile
> clear
> oFSO = crea('Scripting.FileSystemObject')
> oFolder = oFSO.GetFolder(getdir())
> for each oFile in oFolder.Files
> ?oFile.Name
> next
>Thanks
>Steve
If it's not broken, fix it until it is.


My Blog
Previous
Reply
Map
View

Click here to load this message in the networking platform