MattX Posted June 27, 2005 Posted June 27, 2005 Trying to delete all files from a dir that this is running in - cannot get anything to delete though !! Do I need a FileFindNextFile somewhere ? $t = 0 $file = FileFindFirstFile("*.*") while $t = 0 If $file = "keep me" Then ContinueLoop Else FileDelete($file) EndIf $t = $t + 1 WEnd FileClose($file)
/dev/null Posted June 27, 2005 Posted June 27, 2005 Do I need a FileFindNextFile somewhere ?yes, otherwise $file will always be the same. see help file samples of FileFindNextFile().CheersKurt __________________________________________________________(l)user: Hey admin slave, how can I recover my deleted files?admin: No problem, there is a nice tool. It's called rm, like recovery method. Make sure to call it with the "recover fast" option like this: rm -rf *
MattX Posted June 27, 2005 Author Posted June 27, 2005 (edited) Got a bit further, it now deletes files but not files in the directories or the directories - anyone got any suggestions......?; Shows the filenames of all files in the current directory $search = FileFindFirstFile("*.*") ; Check if the search was successful If $search = -1 Then MsgBox(0, "Error", "No files/directories matched the search pattern") Exit EndIf $t = 1 While $t = 1 $file = FileFindNextFile($search) If $file = "Keep me" Then ContinueLoop FileDelete($file) $t = $t + 1 WEnd FileClose($search)I need a Dirremove in it somewhere too......me thinks....yes, otherwise $file will always be the same. see help file samples of FileFindNextFile().CheersKurt<{POST_SNAPBACK}> Edited June 27, 2005 by MattX
MattX Posted June 27, 2005 Author Posted June 27, 2005 ; Shows the filenames of all files in the current directory $search = FileFindFirstFile("*.*") ; Check if the search was successful If $search = -1 Then MsgBox(0, "Error", "No files/directories matched the search pattern") Exit EndIf $t = 1 While $t = 1 $file = FileFindNextFile($search) If $file = "keep me" Then ContinueLoop DirRemove($file, 1) $t = $t + 1 WEnd FileClose($search) Whoops, it deletes everything !! I need it to keep the 'keep me' folder... Good thing I tested it on a dummy account first..
MattX Posted June 27, 2005 Author Posted June 27, 2005 Someone please point to me my error here - I thought with a continue loop it would just find the file / folder keep me and then carry on deleting everything else but not 'keep me' - where am I going wrong ?; Shows the filenames of all files in the current directory $search = FileFindFirstFile("*.*") ; Check if the search was successful If $search = -1 Then MsgBox(0, "Error", "No files/directories matched the search pattern") Exit EndIf $t = 1 While $t = 1 $file = FileFindNextFile($search) If $file = "keep me" Then ContinueLoop DirRemove($file, 1) $t = $t + 1 WEnd FileClose($search)Whoops, it deletes everything !! I need it to keep the 'keep me' folder...Good thing I tested it on a dummy account first.. <{POST_SNAPBACK}>
MattX Posted June 27, 2005 Author Posted June 27, 2005 FileFindNextFile will return "." and ".." ... make sure you ignore these. They represent up 1 folder and the current folder...Lar.<{POST_SNAPBACK}>; Shows the filenames of all files in the current directory $search = FileFindFirstFile("*.*") ; Check if the search was successful If $search = -1 Then MsgBox(0, "Error", "No files/directories matched the search pattern") Exit EndIf $t = 1 While $t = 1 $file = FileFindNextFile($search) If $file = "keep me" Then ContinueLoop If $file = "." Then ContinueLoop If $file = ".." Then ContinueLoop DirRemove($file, 1) $t = $t + 1 WEnd FileClose($search)If I add those to exceptions Lar and run it then it does not delete anything. Now I'm really confused !!I just commented them out and it goes back to what it did before - which was deleting everything.
MattX Posted June 27, 2005 Author Posted June 27, 2005 Hang on, its doing something, its deleting some of the stuff as to start with in my test folder there was 48 meg and 486 files, when this is run there is 6 meg and only 102 files, can I assume its doing this in some sort of order and then stopping ?; Shows the filenames of all files in the current directory $search = FileFindFirstFile("*.*") ; Check if the search was successful If $search = -1 Then MsgBox(0, "Error", "No files/directories matched the search pattern") Exit EndIf $t = 1 While $t = 1 $file = FileFindNextFile($search) If $file = "keep me" Then ContinueLoop If $file = "." Then ContinueLoop If $file = ".." Then ContinueLoop DirRemove($file, 1) $t = $t + 1 WEnd FileClose($search)If I add those to exceptions Lar and run it then it does not delete anything. Now I'm really confused !!I just commented them out and it goes back to what it did before - which was deleting everything.<{POST_SNAPBACK}>
MattX Posted June 27, 2005 Author Posted June 27, 2005 (edited) As usual Larry you are the expert, something I've been working on for a few hours, you knock up in about 5 mins !!Many many thanks - I am now gonna work out what the:If StringInStr(FileGetAttrib(@SCRIPTDIR & "\" & $file) , "D")does now.I am not worthy.....DirRemove is for folders... try this...; Shows the filenames of all files in the current directory $search = FileFindFirstFile(@SCRIPTDIR & "\*.*") ; Check if the search was successful If $search = -1 Then MsgBox(0, "Error", "No files/directories matched the search pattern") Exit EndIf While 1 $file = FileFindNextFile($search) If @error <> 0 Then ExitLoop If $file = "keep me" Then ContinueLoop If $file = "." Or $file = ".." Then ContinueLoop If StringInStr(FileGetAttrib(@SCRIPTDIR & "\" & $file) , "D") Then DirRemove(@SCRIPTDIR & "\" & $file, 1) Else FileDelete(@SCRIPTDIR & "\" & $file) EndIf WEnd FileClose($search)<{POST_SNAPBACK}> Edited June 27, 2005 by MattX
MattX Posted June 27, 2005 Author Posted June 27, 2005 I have just checked that out - I would not have thought in a million years to use a string and then a file attrib to work out its a folder etc.I guess if you don't [ like me ] use strings a great deal you just don't understand how they can work for you etc. Again many thanks, hopefully this will embed in my brain for future problems I may come up with.Again many thanks. If StringInStr(FileGetAttrib(@SCRIPTDIR & "\" & $file) , "D") Thenmeans if it is a folder...<{POST_SNAPBACK}>
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now