i also use Everything to find files with Attribut "A" for Backup.
you have to configure Everything in Setup and enable Attribut.
- Every_Setup.jpg (87.42 KiB) Viewed 3157 times
than you can search with
this will search for all files with Attribut "A" under D:\ALASKA\
you have to modify Code for Attribut with other Constant this Way
Code: Select all
// set search
@ Everything32:Everything_SetSearchA( cText )
// what to search
@ Everything32:Everything_SetRequestFlags( nor( EVERYTHING_REQUEST_PATH, EVERYTHING_REQUEST_FILE_NAME, EVERYTHING_REQUEST_ATTRIBUTES, EVERYTHING_REQUEST_EXTENSION ) )
// sort result
@ Everything32:Everything_SetSort( EVERYTHING_SORT_ATTRIBUTES_DESCENDING )
// execute the query
@ Everything32:Everything_QueryA( .T. )
nNum := @Everything32:Everything_GetNumResults()
FOR n := 1 TO nNum
// is it a File (other are Folder/Volumn
bIsFileResult := @Everything32:Everything_IsFileResult(n-1)
IF bIsFileResult = 1
// get full path filename
buf := SPACE( bufsize )
@ Everything32:Everything_GetResultFullPathNameA( n-1, @buf, bufsize )
cItem := ALLTRIM( STRTRAN(buf,CHR(0),"") )
IF IsFileNotDir(cItem)
// check for Attribute
nAttribut := @ Everything32:Everything_GetResultAttributes(n-1)
cAttribut := Num2Attribut(nAttribut)
DO CASE
CASE "H" $ cAttribut
CASE "D" $ cAttribut
CASE "A" $ cAttribut
AADD( aResult, {cItem,LTRIM(STR(nAttribut)),cAttribut} )
ENDCASE
ENDIF
ENDIF
NEXT
Code: Select all
FUNCTION Num2Attribut(nMode)
LOCAL cRet := ""
LOCAL nRest := 0
LOCAL i,iMax
LOCAL aType := {;
{EVERYTHING_FILE_ATTRIBUTE_READONLY ,"READONLY ","R" },;
{EVERYTHING_FILE_ATTRIBUTE_HIDDEN ,"HIDDEN ","H" },;
{EVERYTHING_FILE_ATTRIBUTE_SYSTEM ,"SYSTEM ","S" },;
{EVERYTHING_FILE_ATTRIBUTE_DIRECTORY ,"DIRECTORY ","D" },;
{EVERYTHING_FILE_ATTRIBUTE_ARCHIVE ,"ARCHIVE ","A" },;
{EVERYTHING_FILE_ATTRIBUTE_DEVICE ,"DEVICE ","V" },;
{EVERYTHING_FILE_ATTRIBUTE_NORMAL ,"NORMAL ","N" },;
{EVERYTHING_FILE_ATTRIBUTE_TEMPORARY ,"TEMPORARY ","T" },;
{EVERYTHING_FILE_ATTRIBUTE_SPARSE_FILE ,"SPARSE_FILE ","S" },;
{EVERYTHING_FILE_ATTRIBUTE_REPARSE_POINT ,"REPARSE_POINT ","P" },;
{EVERYTHING_FILE_ATTRIBUTE_COMPRESSED ,"COMPRESSED ","C" },;
{EVERYTHING_FILE_ATTRIBUTE_OFFLINE ,"OFFLINE ","O" },;
{EVERYTHING_FILE_ATTRIBUTE_NOT_CONTENT_INDEXED,"NOT_CONTENT_INDEXED","I" },;
{EVERYTHING_FILE_ATTRIBUTE_ENCRYPTED ,"ENCRYPTED ","E" } }
ASORT(aType,,,{|aX,aY| aX[1] > aY[1]})
nRest := nMode
DO WHILE .T.
IF nRest > aType[1,1]
nRest -= aType[1,1]
ELSE
EXIT
ENDIF
ENDDO
iMax := LEN(aType)
FOR i := 1 TO iMax
IF nRest > 0
ELSE
EXIT
ENDIF
IF aType[i,1] $ nRest
cRet += aType[i,3]
nRest -= aType[i,1]
ENDIF
NEXT
RETURN cRet
FUNCTION IsDir(cDirName) // NO wildcards !!!
local aNames, lReturn
if right(cDirName,1) = "\"
cDirName := left(cDirName,len(cDirName)-1)
endif
aNames := directory(cDirName,"D")
if empty(aNames)
lReturn := .f.
else
lReturn := .t.
endif
return lReturn
FUNCTION IsFileNotDir(cItem)
local aNames, lReturn := .F.
aNames := directory(cItem,"D")
if empty(aNames)
lReturn := .f.
else
IF EMPTY(aNames[1][F_SIZE] )
lReturn := .f.
ELSE
lReturn := .t.
endif
endif
return lReturn
i use Array with full-path-filename with ShOperation API to copy it to USB-Stick / Drive
have fun