elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 22:03  


Tema destacado: Únete al Grupo Steam elhacker.NET

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  [Source] Eliminar carpetas, subcarpetas y archivos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Source] Eliminar carpetas, subcarpetas y archivos  (Leído 1,826 veces)
nhaalclkiemr


Desconectado Desconectado

Mensajes: 1.666


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
[Source] Eliminar carpetas, subcarpetas y archivos
« en: 14 Febrero 2008, 18:46 »

Weno pues he hecho una funcion sencilla para borrar carpetas y sus archivos, con la posibilidad de eliminar sus subcarpetas. La funcion devolverá 0 si no se consiguió eliminar a carpeta original, si la carpeta se consiguó eliminar correctamente devolverá un valor distinto de 0. Fijate en que para borrar una carpeta primero hay que borrar todos sus archivos, si cualquier archivo de cualquier subcarpeta no se consiguió eliminar (por ejemplo por estár en uso) no se podrá borrar la carpeta original y la funcion devolverá 0, aunke puede que borrase la mayor parte de los archivos igualmente...

Si seleccionas eliminar las subcarpetas (que es lo normal) se borrarán todos los archivos y subcarpetas de la misma, y por ultimo se borra tambien la carpeta.

Si no seleccionas borrar las subcarpetas solamente se borran los archivos de la carpeta elegida y posteriormente se intenta borrar la carpeta, pero si existen subcarpetas está nunca se conseguirá eliminar (ya que hay subcarpetas dentro) y la funcion devolverá un valor distinto de 0.

Weno hice dos funciones, una usando las APIs y otra usando las funciones de VB:

Código
Option Explicit
 
Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
Private Declare Function RemoveDirectory Lib "kernel32" Alias "RemoveDirectoryA" (ByVal lpPathName As String) As Long
 
Public Function ElimFolder(ByVal sDir As String, ByVal WithSubfolders As Boolean) As Long
Dim sFile As String
Dim counD As Long, counF As Long
Dim i As Long
ReDim sDirs(0 To 0) As String
ReDim sFiles(0 To 0) As String
On Error Resume Next
If IsDir(sDir) Then
   If Right(sDir, 1) <> "\" Then sDir = sDir & "\"
   sFile = Dir(sDir, 55)
   Do
       If IsDir(sDir & sFile) Then
           If (sFile <> ".") And (sFile <> "..") Then
               ReDim Preserve sDirs(0 To counD) As String
               sDirs(counD) = sDir & sFile
               counD = counD + 1
           End If
       Else
           ReDim Preserve sFiles(0 To counF) As String
           sFiles(counF) = sFile
           counF = counF + 1
       End If
       sFile = Dir
   Loop While sFile <> vbNullString
   If sFiles(0) <> vbNullString Then
       For i = 0 To UBound(sFiles)
           DeleteFile sDir & sFiles(i)
       Next i
   End If
   If WithSubfolders Then
       If sDirs(0) <> vbNullString Then
           For i = 0 To UBound(sDirs)
               ElimFolder sDirs(i), True
           Next i
       End If
   End If
   ElimFolder = RemoveDirectory(sDir)
End If
End Function



Código
Option Explicit
 
Public Function ElimFolder(ByVal sDir As String, ByVal WithSubfolders As Boolean) As Long
Dim sFile As String
Dim counD As Long, counF As Long
Dim i As Long
ReDim sDirs(0 To 0) As String
ReDim sFiles(0 To 0) As String
On Error Resume Next
If IsDir(sDir) Then
   If Right(sDir, 1) <> "\" Then sDir = sDir & "\"
   sFile = Dir(sDir, 55)
   Do
       If IsDir(sDir & sFile) Then
           If (sFile <> ".") And (sFile <> "..") Then
               ReDim Preserve sDirs(0 To counD) As String
               sDirs(counD) = sDir & sFile
               counD = counD + 1
           End If
       Else
           ReDim Preserve sFiles(0 To counF) As String
           sFiles(counF) = sFile
           counF = counF + 1
       End If
       sFile = Dir
   Loop While sFile <> vbNullString
   If sFiles(0) <> vbNullString Then
       For i = 0 To UBound(sFiles)
           Kill sDir & sFiles(i)
       Next i
   End If
   If WithSubfolders Then
       If sDirs(0) <> vbNullString Then
           For i = 0 To UBound(sDirs)
               ElimFolder sDirs(i), True
           Next i
       End If
   End If
   Err.Clear
   RmDir sDir
   If Err.Number = 0 Then ElimFolder = 1
End If
End Function

Son codes sencillos pero espero que les sirvan a alguien. :xD

Saludos ;)


En línea

StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 0.9- 100%
~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.983


Ver Perfil WWW
Re: [Source] Eliminar carpetas, subcarpetas y archivos
« Respuesta #1 en: 15 Febrero 2008, 11:42 »

Vaya racha de sources xDD te ls pongo en la biblioteca todos ;)


En línea
Chefito

Desconectado Desconectado

Mensajes: 121



Ver Perfil WWW
Re: [Source] Eliminar carpetas, subcarpetas y archivos
« Respuesta #2 en: 15 Febrero 2008, 12:56 »

Gran trabajo nhaalclkiemr. Solo una puntualización,¿IsDir() es una función creada por ti?....como no la has puesto  ;).
Sería por ejemplo algo asi no?
Código:
Public Function IsDir(Directorio as string) as boolean
   if len(Dir(Directorio,vbDirectory))<>0 then IsDir=true else IsDir=false
End Function
Corrigeme si me he equivocado.
Saludos.
En línea

Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)
Chefito

Desconectado Desconectado

Mensajes: 121



Ver Perfil WWW
Re: [Source] Eliminar carpetas, subcarpetas y archivos
« Respuesta #3 en: 15 Febrero 2008, 13:34 »

Por cierto, otra forma de borrarlos:
Código:
Private Function BorrarDirectorio(Directorio As String) As Boolean
    On Error GoTo nodirectorio
    Dim fs As Object
    Set fs = CreateObject("Scripting.FileSystemObject")
    fs.DeleteFolder Directorio
    BorrarDirectorio = True
    Exit Function
nodirectorio:
    BorrarDirectorio = False
End Function
Le puedes meter la función isdir para obligarlo aun mas a que sea un directorio ;). Vamos....esto solo sería la base de una función. Da false si ocurre algun error y no puede borrarlo y true si lo borrar.
Saludos.
P.D. Esto se carga el directorio con todo su contenido dentro. Para hacerlo igual que nhaalclkiemr, tendríamos que currarnoslo más, y no tengo ganas ;). A ver si alguien se anima. Por cierto........no sobrevivió el comando deltree de msdos?
En línea

Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayudenme , necesito un codigo en Borland C++ que Copie Carpetas y Subcarpetas
Programación C/C++
LAOMGD 1 512 Último mensaje 2 Agosto 2011, 00:15
por mDrinky
Programita para eliminar LNK y recuperar carpetas
Scripting
erickvcr 5 1,393 Último mensaje 20 Septiembre 2011, 19:23
por erickvcr
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines