Professor...
...and the survey says..."DirPlus()" might get you closer to what you want (as far as enumerating the folders)...
code:
;
BREAK ON
"Source Directory:" ?
GETS $workingdir
;enter source directory
"Destination Directory:" ?
GETS $destdir
;enter destination directory
;stuff the dos command into a variable
$cmdstr="%COMSPEC% /q /e:1024 /c XCOPY $workingdir\$projfile $DestDir\$projfile /E /I /Q"
WHILE 1=1
"Project Folder Number:" ?
GETS $projfile
$dirplus = DIRPLUS($workingdir,"*.*",1);load array with all the (sub)folders and files
FOR EACH $item IN $dirplus ;read the array element by element until array ends
IF INSTR($item,".dgn"); if the element satisfies the file extension criteria
; ?$item ; uncomment this line if you want to view the items...
SHELL $cmdstr ; then do the dos dance (a waltz?)
ENDIF
NEXT
LOOP
;
;FUNCTION DirPlus()
;
;Author Bryce Lindsay(bryce@isorg.net)
;
;Action Returns an array containing a file structure of a specified folder.
;
;Syntax DirPlus("folder","mask",[subfolders],[datatype])
;
;Parameters Folder
; the folder you want information from
;
; Mask
; the type of file mask you want to use.
; "*.*" will return everything.
; ".exe" will return everything that has a ".exe" in it. (this
; is more like a search sting, than a true file mask)
; for multiple file type seperate search patterns with a ;
; ".exe;.html;.doc"
;
; Subfolders
; Optional flag,
; 0 = do not include subfolders
; 1 = include subfolders
;
; DataType
; Optional flag
; 0 = standard filename
; 1 = return the objecthandle
;
;Remarks This is an expansion on the regular DIR() command.
;
;Returns Returns an Array of elements files with file and folder information
; of the specified folder
;
;Dependencies WSH com library is needed if you want to return the object handles.
;
;Example(s) $dir = DirPlus("%temp%","*.*")
; $dir = dirplus("$temp%,".exe",1)
; $dir = dirplus("$temp%,".dll",0,1)
;
;Source
FUNCTION DirPlus($dir,$mask,OPTIONAL $subfolders, OPTIONAL $datatype)
DIM $file, $subflag, $i, $ii,$pattern
IF vartype($_temparray) = 0
GLOBAL $_temparray[30], $_i
$_i = 0
ELSE
$subflag = 1
ENDIF
IF $dir = 0
EXIT(1)
ENDIF
IF substr($dir,len($dir),1) = "\"
$dir = substr($dir,1,len($dir)-1)
ENDIF
IF $mask = 0
$mask = "*.*"
ENDIF
$mask = split($mask,";")
IF exist($dir) = 0
EXIT(2)
ENDIF
$file = dir($dir + "\*.*")
WHILE @error = 0 AND $file
SELECT
CASE
$file = "." OR $file = ".."
;bit bucket!
CASE
getfileattr($dir + "\" + $file) & 16
$_temparray[$_i] = $dir + "\" + $file
$_i = $_i + 1
IF $subfolders = 1
dirplus($dir + "\" + $file,"*.*",$subfolders)
IF @error <> 0
EXIT(1)
ENDIF
ENDIF
CASE
1
$_temparray[$_i] = $dir + "\" + $file
$_i = $_i + 1
ENDSELECT
IF ubound($_temparray) = $_i
REDIM PRESERVE $_temparray[$_i + 30]
ENDIF
$file = dir("")
LOOP
IF $subflag = 1
;
ELSE
REDIM PRESERVE $_temparray[$_i-1]
$dirplus = $_temparray
SELECT
CASE
$mask[0] = "*.*"
;return all files!
CASE
1
DIM $temparray[ubound($dirplus)]
$ii = 0
FOR EACH $pattern IN $mask
$i = 0
FOR EACH $file IN $dirplus
IF instr($file,$pattern)
$temparray[$ii] = $dirplus[$i]
$ii = $ii + 1
ENDIF
$i = $i + 1
NEXT
NEXT
IF $ii > 0
REDIM PRESERVE $temparray[$ii-1]
$dirplus = $temparray
ELSE
$dirplus = 0
ENDIF
ENDSELECT
SELECT
CASE
$datatype = 0
;return filename!
CASE
$datatype = 1
;return File object handle
$i = 0
$fso = createobject("scripting.filesystemobject")
IF @error <> 0 AND vartype($fso) <> 9
EXIT(@error)
ENDIF
FOR EACH $file IN $dirplus
IF getfileattr($file) & 16
$file = $fso.getfolder($file)
ELSE
$file = $fso.getfile($file)
ENDIF
$dirplus[$i] = $file
$i = $i + 1
NEXT
ENDSELECT
$_i = 0
$_temparray = 0
EXIT(0)
ENDIF
ENDFUNCTION
[ 09. October 2002, 02:30: Message edited by: Waltz ]