2.14.1.6 findFiles

Brief Information

Search for files

Command Line Usage

1. findFiles path:="C:\c" ext:= "doc"

2. findFiles path:="C:\c" time:= "010203-"

3. findFiles path:=System.path.Ascii$ from:=2456658 to:=2456665

Variables

Display
Name
Variable
Name
I/O
and
Type
Default
Value
Description
path to look for files path

Input

string

path$

input full path to look for files

Recursive recursive

Input

int

0

Specify whether to find the files in the recursive folders

filename or extension ext

Input

string

*.*

input filename or extension to be finded

file size range size

Input

string

""

input file size range to be found

file modified date time range time

Input

string

""

input file modified date time range to be found

modified date start from

Input

double

input the beginning of a date time range so only file(s) modified during this period will be found.

modified date end to

Input

double

input the ending of a date time range so only file(s) modified during this period will be found

get result file names with full path addpath

Input

int

1

get result file names with full path or not

result file names separated by CRLF fname

Output

string

fname$

output result file names separated by CRLF

Description

This X-Function is used to search file in specific path and conditions.

Examples

  • The following example shows how to search UFF and find all ini files modified in a specific time period.
string struff$=%Y;
Dbegin=date(09/01/2016);
Dend=date(12/31/2016);
findFiles path:=struff$ ext:="ini" from:=Dbegin to:=Dend addpath:=0;
int nn = fname.GetNumTokens(CRLF);
type "following files were changed between $(Dbegin, D0) - $(Dend, D0)";
for(int ii = 1; ii <= nn; ii++)
{
  string strFilename$ = fname.GetToken(ii, CRLF)$;
  type strfilename$;
}
  • The next example finds and imports files satisfied certain condition, and then create a video based graphs of these data.
doc -s; 
doc -n;
string fname$;//all the XF that deals with files default to fname$ string
//Find files and import them
findFiles path:=system.path.program$+"Samples\Curve Fitting" ext:="*.dat" addpath:=1;//result in fname$
//import from fname$, ImpMode=3 for new book
impasc option.sparklines:=0 option.ImpMode:=3 Options.Names.FNameToBk:=0;
//Create graphs with only the 1st 2 columns
doc -e W
{
	plotxy iy:=(1,2) plot:=200; window -ia;
}
dlgSave ext:=*.avi title:="Saving Video file location";
//Make video
int err = vw.Create(%(fname$));
if(err!= 0)
{
	err=;
	break 1;
}
doc -e P
{
	vw.WriteGraph(%H,1)
}
vw.Release();
type -a "File saved to %(fname$)";
  • Another example to count files by extension, including the files in the recursive folders
//Code to get all files from User Files path
//and count each file types by extension
string uffPath$ = system.path.ini$;
type -a "The following type of files are found in the User Files folder";
type uffPath$;
string results$;

findFiles path:=uffPath$ recursive:=1 fname:=results$;
int nn = results.GetNumTokens(CRLF);
type "A Total of $(nn) files found";

// add each new type into array
StringArray sa;
// fill a temp dataset with 100 cells of1, as first adding will count as 1
dataset na=data(1,1,100);// array to keep count
for(int ii = 1; ii <= nn; ii++)
{
  string strFilename$ = results.GetToken(ii, CRLF)$;
  string strExt$ = strFilename.GetFileExt()$; 
  int nPos = sa.Find(strExt$);  
  if(nPos < 1) // not found
      sa.Add(strExt$);
  else
  {
      na[nPos] += 1;   
      type -q "$(ii): $(nPos) --> $(na[nPos])";
  }
}
// now print the results in the StringArray sa and numeric array na
for(int ii = 1; ii <= sa.GetSize(); ii++)
{
  string strExt$ = sa.GetAt(ii)$;
  type "$(ii): %(strExt$) $(na[ii])";
}

Related X-Functions

FindFolders


Keywords:subfolder, recursive, date, time, extension