This utility searches your path for each occurrence of a file to help debug pathing problems.
Usage:
PATHFOUND ace32.dll will search the path established by SET PATH for aced32.dll.
PATHFOUND dcdialog.ch INCLUDE will search the path established by SET INCLUDE for dcdialog.ch.
Here is the source code:
Code: Select all
#INCLUDE "dcdialog.CH"
FUNCTION Main ( cFileName, cEnv )
LOCAL cFilePath, nPointer, cFileDir, aFiles[0], i, GetList[0], aDir, ;
      nLength := 0
IF Empty(cEnv)
  cEnv := 'PATH'
ENDIF
cEnv := Upper(cEnv)
cFilePath := GetEnv(cEnv)
DO WHILE .t.
  nPointer := AT(';',cFilePath)
  cFileDir := ''
  IF nPointer > 0
    cFileDir := ALLTRIM(SUBSTR( cFilePath, 1, nPointer-1 )) + '\'
    IF File( cFileDir+cFileName )
      nLength := Max(Len(cFileDir+cFileName),nLength)
      aDir := Directory(cFileDir+cFileName)
      AAdd(aFiles, {.f.,cFileDir + cFileName, aDir[1] })
    ENDIF
    cFilePath := SUBSTR( cFilePath, nPointer + 1 )
  ELSE
    cFileDir := ALLTRIM(cFilePath) + '\'
    IF !File(cFileDir+cFileName)
      cFileDir := ''
    ENDIF
    EXIT
  ENDIF
ENDDO
IF Empty(aFiles)
  DCMSGBOX 'File: ' + cFileName + ' not found in ' + cEnv + ' environment'
  RETURN .f.
ENDIF
@ 1,7 DCSAY 'Folder Name' SAYSIZE 0 FONT '12.Lucida Console Bold'
@ 1, 95 DCSAY ' Size     Date      Time' FONT '12.Lucida Console Bold' SAYSIZE 0
FOR i := 1 TO Len(aFiles)
  @ i+2,0 DCSAY Str(i,2) SAYSIZE 0 FONT '12.Lucida Console Bold' SAYBOTTOM
  @ i+2,5 DCCHECKBOX aFiles[i,1] PROMPT Pad(aFiles[i,2],nLength) FONT '11.Lucida Console'
  @ i+2,95 DCSAY ;
        DC_XtoC(aFiles[i,3,2]) + '   ' + ;
        DC_XtoC(aFiles[i,3,3]) + '   ' + ;
        DC_XtoC(aFiles[i,3,4]) ;
        FONT '12.Lucida Console' SAYSIZE 0
NEXT
@ i + 3 DCPUSHBUTTON CAPTION 'Delete Checked File(s)' SIZE 20,1.2 ;
     ACTION {||DeleteCheckedFiles(aFiles)}
DCREAD GUI FIT TITLE 'File(s) found in ' + cEnv + ' environment'
RETURN nil
* ---------
PROC appsys ; return
* ---------
STATIC FUNCTION DeleteCheckedFiles(aFiles)
LOCAL i, nCount := 0
FOR i := 1 TO Len(aFiles)
  IF aFiles[i,1]
    Ferase(aFiles[i,2])
    nCount++
  ENDIF
NEXT
DCMSGBOX Alltrim(Str(nCount)) + ' files deleted!'
RETURN nil