ftp delete non-empty folder

Sarah sarahr at genesearch.com.au
Tue Nov 18 16:48:05 EST 2003


Thanks very much Dave, I'll test this script and use it although I was 
hoping there would be a single FTP command :-(
My FTP server lists ".." and "." so I'll have to add a check for that 
to your script as well.

Cheers,
Sarah
sarahr at genesearch.com.au
http://www.troz.net/Rev/

On 19 Nov 2003, at 2:52 am, Dave Cragg wrote:

> At 10:57 am +1000 18/11/03, Sarah wrote:
>> I have a utility that creates a folder with several sub-folders on
>> an FTP server and transfers files to the correct folders. This all
>> works fine but I also want to be able to delete the complete folder
>> when I've finished testing. So far, the only solution has been to
>> loop through each file & sub-folder as I can't work out how to
>> delete a non-empty folder.
>>
>> I have tried "delete URL ftp://..." and I have tried sending direct
>> FTP commands: DELE & RMD but all three options return an error
>> saying the directory is not empty.
>>
>> Is there a way of doing this in a single step?
>> Is it a server-specific setting (in which case I can't assume that
>> it will work everywhere)?
>
> Looping through the folders and files is the only way to do it right 
> now. (The delete directory command works in a similar way.)
>
> The handler below should do what you want. Check that "the result" is 
> empty  to confirm that it deleted everything. BUT please test 
> carefully as there could be some gotchas.. It checks for the presence 
> of a ".." listing. I don't know if any FTP servers include this in 
> directory listings, but just in case. (I once got caught this way when 
> looping through "the directories" on the local file system.)
>
> on deleteFTPDirectory pUrl
>   try
>     if last char of pUrl <> "/" then
>       put "/" after pUrl
>     end if
>     put url pUrl into tList
>     if the result <> empty then
>       throw the result
>     end if
>     repeat for each line tLine in tList
>       if char 1 of tLine is "-" then
>         put pUrl & word 9 to -1 of tLine into tFileUrl
>         delete url tFileUrl
>         if the result <> empty then
>           throw the result
>         end if
>       else if char 1 of tLine is "d" then
>         if word 9  of tLine <> ".." then
>           put word 9 to -1 of tLine into tDir
>
>           put pUrl & word 9 to -1 of tLine into tDirUrl
>           deleteFTPDirectory tDirUrl
>           if the result is not empty then
>             throw the result
>           end if
>         end if
>       end if
>     end repeat
>     delete url pUrl
>     if the result is not empty then
>       throw the result
>     end if
>     return empty
>   catch pErr
>     return pErr
>   end try
> end deleteFTPDirectory
>
> Cheers
> Dave
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> http://lists.runrev.com/mailman/listinfo/use-revolution
>
>
>



More information about the use-livecode mailing list