I use getpath command to get the path of an executable file. Works great.
Problem I am having is that on this path, I need to add a folder and that isn't working too well for me.
Assumming the path is c:\windows\temp, I need to add "Current\*.*" so the new path would be c:\windows\temp\current\*.*. How do I do this?
Posts: 12,073
Threads: 140
Joined: Dec 2002
str s1 s2 s3
s1="c:\windows\temp"
s2="current\*.*"
s3.from(s1 "\" s2)
out s3
Oh works great! Didn't know about the "from" command. Kinda works like concat on other languages.
Thanks so much
Posts: 331
Threads: 60
Joined: May 2006
im trying to get the full path of a file with out knowing what hard drive it could be on lets say i want to find test.exe and have it "OUT" that in the output box
Posts: 12,073
Threads: 140
Joined: Dec 2002
?:\path\test.exe
You don't know drive letter (red). Do you know path without drive letter (green)? If no, searching for test.exe may take long time.
Posts: 331
Threads: 60
Joined: May 2006
its going to be either C or D drive ........ i guess what i need to do is a search to get the full path of the file, but im not sure how to do this with quick macros ...........just for an ex could you show me how i would search the C drive for a file to get the full path
Posts: 12,073
Threads: 140
Joined: Dec 2002
Function FindFileInDrives
;/
function# $filename str&sPath [$drives] [driveType] [flags] [DATE'date1] [DATE'date2] ;;driveType: 0 fixed (hard drive)(default), 2 removable (eg flash), 3 same as 0, 4 network, 5 CD, 6 ramdisk; flags: 0 file, 1 folder, 2 any, 4 not in folders, 8 only in folders, 16 date created
;Finds file and stores full path into sPath.
;Searches in specified drives or in drives of specified type.
;filename - filename, eg "qm.exe"
;sPath - will receive full path
;drives - string consisting of drive letters, eg "cef". Can be "".
;driveType - search in drives of this type. Used only if drives is "".
;date1, date2 - file modified time must be between date1 and date2.
;EXAMPLE
;str s
;if(FindFileInDrives("qm.exe" s)) ;;search for qm.exe in all hard drives
,;out s
;else
,;out "not found"
def DRIVE_UNKNOWN 0
def DRIVE_NO_ROOT_DIR 1
def DRIVE_REMOVABLE 2
def DRIVE_FIXED 3
def DRIVE_REMOTE 4
def DRIVE_CDROM 5
def DRIVE_RAMDISK 6
dll kernel32 #GetLogicalDrives
dll kernel32 #GetDriveType $nDrive
sPath.fix(0)
str s.from(" :\" filename) sd; int i dt dm; Dir d
int nd=len(drives)
if(nd)
,for i 0 nd
,,s[0]=drives[i]
,,foreach(d s FE_Dir 0x4^flags date1 date2) sPath=d.FileName(1); ret 1
else
,if(!driveType) driveType=DRIVE_FIXED
,sd=" :\"
,dm=GetLogicalDrives ;;32-bit mask of available drives
,for i 0 26
,,if(dm>>i&1=0) continue
,,sd[0]='A'+i
,,dt=GetDriveType(sd); if(dt>6) dt=0
,,if(dt!=driveType) continue
,,s[0]='A'+i
,,foreach(d s FE_Dir 0x4^flags date1 date2) sPath=d.FileName(1); ret 1
Posts: 331
Threads: 60
Joined: May 2006
thank you that works greatttttttt
Posts: 129
Threads: 38
Joined: May 2006
Can this function be used to also find any file consisting of a specific word in all the drives? For example, I would like to find any file with the word "apple.txt", not case sensitive, in all the drives. Will this work? The old dos commands, one would use dir *apple*.txt. How would this be done on QM?
Posts: 12,073
Threads: 140
Joined: Dec 2002
Yes, * and ? can be used in file name.
Posts: 6
Threads: 1
Joined: Jan 2008
hi gin,
how can i use this when i want to make an exe-file ???
thx
maxxx
|