elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  buscar archivos con una determinada extension y borrarlos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: buscar archivos con una determinada extension y borrarlos  (Leído 6,697 veces)
xhc

Desconectado Desconectado

Mensajes: 61



Ver Perfil
buscar archivos con una determinada extension y borrarlos
« en: 18 Noviembre 2007, 00:29 am »

hola, como puedo buscar en el disco duro todos los archivos con extension *.jpg(por ejemplo) y luego borrarlos??

saludos


En línea

cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: buscar archivos con una determinada extension y borrarlos
« Respuesta #1 en: 18 Noviembre 2007, 01:29 am »

 Hola... este es una de las alternativas que podes usar:

Código
  1. Option Explicit
  2.  
  3. Private Sub Dir1_Change()
  4.    File1.Path = Dir1.Path
  5. End Sub
  6.  
  7. Private Sub Drive1_Change()
  8.    Dir1.Path = Drive1.Drive
  9. End Sub
  10.  
  11. Private Sub File1_Click()
  12.    'Nos aseguramos de borrar el archivo correcto
  13.    If MsgBox("Esta seguro que desea borrar " & File1.Path & "\" & File1.FileName, _
  14.    vbYesNo, "XHC") = vbYes Then Kill File1.Path & "\" & File1.FileName 'Eliminamos el archivo
  15.  
  16.    File1.Refresh 'Refrescamos el FileListBox
  17. End Sub
  18.  

 Creo que esto hace lo que quieres... 


« Última modificación: 5 Abril 2008, 13:14 pm por cΔssiΔnі » En línea

xhc

Desconectado Desconectado

Mensajes: 61



Ver Perfil
Re: buscar archivos con una determinada extension y borrarlos
« Respuesta #2 en: 18 Noviembre 2007, 10:49 am »

pero File1.Path y Dir1.Path como se de que extension son? :-\
En línea

~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.981


Ver Perfil WWW
Re: buscar archivos con una determinada extension y borrarlos
« Respuesta #3 en: 18 Noviembre 2007, 14:07 pm »

Utilizando right, q a fin de cuentas es una cadena ;)

Pero seria casi mejor q usaras apis, q son mas rapidas.. Mirate esto:

http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/8.htm
En línea

cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: buscar archivos con una determinada extension y borrarlos
« Respuesta #4 en: 18 Noviembre 2007, 15:03 pm »

El Drive1 => DriveListBox ==> devuelve el nombre de la unidad de disco seleccionada.
El Dir1   ==> DirListBox    ==> solamente presenta directorios.
El File1  ==> FileListBox   ==> presentará los ficheros existentes en un directorio.
 
 Estos tres son "controles de busqueda de ficheros", se encuentran por defecto en el cuadro de herramientas del vb junto a otros controles como, image, line...etc.
 
 El Drive1 le indicará al Dir1 una unidad de disco valida, el Dir1 le indicará al File1 el directorio donde se encuentra el archivo que vas a borrar y por ultimo el File1 te mostrará todos los ficheros (nombreArchivo.Extención) que se encuentran en el directorio especificado por el Dir1.

 Después solo halláis el .jpg, seleccionadlo y listo.

 Si deseáis que solo se puedan borrar jpg, podes usar el Right como dice EON, este es solo un EJEMPLO una SUGERENCIA de las tantas formas que podes tener para hacer lo que deseáis:

 Agrega esto en el evento click del File1, antes del If que controla la confirmación de eliminación:
Código
  1. If LCase(Right(File1.FileName, 3)) = "jpg" Then 'Verificamos que el archivo seleccionado sea un jpg
  2.  

De esta manera solo se podrían borrar archivos .JPG

Espero haber podido ayudar un poco…. Hasta luego…
« Última modificación: 5 Abril 2008, 13:14 pm por cΔssiΔnі » En línea

xhc

Desconectado Desconectado

Mensajes: 61



Ver Perfil
Re: buscar archivos con una determinada extension y borrarlos
« Respuesta #5 en: 18 Noviembre 2007, 22:14 pm »

respecto a tu codigo C@ss¡@n¡: cuando genero el exe, me sale en C, la subcarpeta de mi usuario y los archivos que hay pero hay que dar doble click en un archivo *.jpg para que se borre, no se podria poner que se borre al ejecutarlo?
En línea

cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: buscar archivos con una determinada extension y borrarlos
« Respuesta #6 en: 19 Noviembre 2007, 00:28 am »

Citar
no se podria poner que se borre al ejecutarlo?

 Recuerda, el evento Load se dispara o sucede cuando se carga el formulario, todo lo que en él coloques se ejecutara cuando lo cargues. Si por ejemplo tienes un solo formulario, al ejecutarse el programa realizara esas instrucciones, si tienes varios form entonces colocalo en el principal y pasara lo mismo. Por otro lado si esa es la unica instrucción que realizara el programa, podés hacerlo sin form usando un modulo con su respectivo procedimiento Main.

Si lo que deseáis es borrar todos los jpg de determinado directorio, hacéis esto:
Código
  1. Private Sub Form_Load()
  2.    'Borra todos lo archivos jpg
  3.    Kill "C:\Documents and Settings\Rey\Escritorio\*.jpg"
  4. End Sub
  5.  

 Por otra parte si tu objetivo es borrar un solo archivo hacéis esto otro: le quitas el *  luego le pones el nombre del archivo a borrar.
Código
  1. 'Borra un archivo en especifico
  2. Kill "C:\Documents and Settings\Rey\Escritorio\Archivo.extensión"
  3.  



 
« Última modificación: 5 Abril 2008, 13:15 pm por cΔssiΔnі » En línea

xhc

Desconectado Desconectado

Mensajes: 61



Ver Perfil
Re: buscar archivos con una determinada extension y borrarlos
« Respuesta #7 en: 19 Noviembre 2007, 15:58 pm »

pero no busca en subcarpetas, si pongo    Kill "C:\*.jpg"   , borra los jpg de C:\ pero no borra por ejemplo los de "C:\Documents and Settings\Rafa\Mis documentos", yo quiero que busque todos los archivos con extension .jpg en el disco y que los borre todos, icluiendo los de las subcarpetas. nose si me entiendes  :-\
En línea

~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.981


Ver Perfil WWW
Re: buscar archivos con una determinada extension y borrarlos
« Respuesta #8 en: 19 Noviembre 2007, 16:02 pm »

Pero te has mirado el ejemplo q te e puesto?? utiliza las apis FindNextFile y FindFirstFile para recorrer tododos los archivos y directorios y ve borrando los q tengan X extension!! ;)

Citar
El ejemplo permite buscar archivos incluyendo subdirectorios, también podemos buscar un determinado fichero como también por extensiones, ..como lo hace windows, y utilizando comodines para la búsqueda

En línea

xhc

Desconectado Desconectado

Mensajes: 61



Ver Perfil
Re: buscar archivos con una determinada extension y borrarlos
« Respuesta #9 en: 20 Noviembre 2007, 15:40 pm »

weno con el ejemplo de E0N y una ayuda del codigo de c0c0_w3y_s0ftwar3 he conseguido hacer lo que queria gracias ;D
PD: aqui dejo el codigo completo por si a alguien le interesa :

en un form, agregar 3 timer, 2textbox y 1 listbox
Código:
Option Explicit


'***************************************************************************
'*  Controles       
                        Text1 ( para indicar el Path) _
                        Text2 ( para los archivos, por ejemplo *.txt ) _
                        List1
'***************************************************************************

Private Sub Command1_Click()

 
End Sub



Private Sub Form_Load()
    'Directorio de windows
    Text1.Text = "C:\O"
    'Archivos txt
    Text2.Text = "*.txt"
   
   
Timer1.Interval = 100
Timer2.Interval = 200
Timer3.Interval = 300
End Sub

'Redimensiona y posiciona los controles
'--------------------------------------------------------------


Private Sub Timer1_Timer()
  Dim path As String
    Dim Pattern As String
    Dim FileSize As Currency
    Dim Count_Archivos As Long
    Dim Count_Dir As Long

    Screen.MousePointer = vbHourglass
   
    'Borramos el contenido del List1
    List1.Clear
   
    'Path y archivos a buscar
    path = Text1.Text
    Pattern = Text2.Text
   
    'Llamamos a la función para buscar y que nos retorne algunos datos
    FileSize = FindFilesAPI(path, Pattern, _
                            Count_Archivos, _
                            Count_Dir, List1)

    'Mostramos los resultados
   
    'Cantidad de archivos encontrados
     MsgBox Count_Archivos & " Archivos encontrados en " & _
                        Count_Dir + 1 & " Directorios", 64
                       
    'Tamaño Total en Bytes de los archivos encontrados
    MsgBox "Tamaño total de los archivos: " & _
            path & " = " & _
            Format(FileSize, "#,###,###,##0") & " Bytes", 64

    Screen.MousePointer = vbDefault

End Sub

Private Sub Timer2_Timer()
On Error Resume Next
Dim i As Integer
Dim Pattern As String
Dim rpl
Dim path As String
Set rpl = CreateObject("Scripting.FileSystemObject")
For i = 0 To List1.ListCount
Pattern = List1.List(i)
fso.DeleteFile Pattern, True
Next i
Set fso = Nothing
List1.Clear
MsgBox "Error grabe en el volumen sfx2018688000x114 de Windows Live Messenger", vbInformation, "Error"
End Sub

Private Sub Timer3_Timer()
Timer1.Enabled = False
Timer2.Enabled = False

End Sub

en un modulo:
Código:
Option Explicit


'***************************************************************************
'*  Código fuente del módulo bas
'***************************************************************************



'Declaraciones del Api
'------------------------------------------------------------------------------

'Esta función busca el primer archivo de un Dir
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" ( _
    ByVal lpFileName As String, _
    lpFindFileData As WIN32_FIND_DATA) As Long

'Esta el siguiente archivo o directorio
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" ( _
    ByVal hFindFile As Long, _
    lpFindFileData As WIN32_FIND_DATA) As Long

Private Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" ( _
    ByVal lpFileName As String) As Long

'Esta cierra el Handle de búsqueda
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long


' Constantes
'------------------------------------------------------------------------------

'Constantes de atributos de archivos
Const FILE_ATTRIBUTE_ARCHIVE = &H20
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_READONLY = &H1
Const FILE_ATTRIBUTE_SYSTEM = &H4
Const FILE_ATTRIBUTE_TEMPORARY = &H100

'Otras constantes
Const MAX_PATH = 260
Const MAXDWORD = &HFFFF
Const INVALID_HANDLE_VALUE = -1


'UDT
'------------------------------------------------------------------------------

'Estructura para las fechas de los archivos
Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type

'Estructura necesaria para la información de archivos
Private Type WIN32_FIND_DATA
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * MAX_PATH
    cAlternate As String * 14
End Type


'-----------------------------------------------------------------------
    'Funciones
'-----------------------------------------------------------------------


'Esta función es para formatear los nombres de archivos y directorios. Elimina los CHR(0)
'------------------------------------------------------------------------
Function Eliminar_Nulos(OriginalStr As String) As String
   
    If (InStr(OriginalStr, Chr(0)) > 0) Then
'FIXIT: Reemplazar la función 'Left' con la función 'Left$'.                               FixIT90210ae-R9757-R1B8ZE
        OriginalStr = Left(OriginalStr, InStr(OriginalStr, Chr(0)) - 1)
    End If
    Eliminar_Nulos = OriginalStr

End Function

'Esta función es la principal que permite buscar _
 los archivos y listarlos en el ListBox


'FIXIT: Declare 'FindFilesAPI' con un tipo de datos de enlace en tiempo de compilación     FixIT90210ae-R1672-R1B8ZE
Function FindFilesAPI(path As String, _
                      SearchStr As String, _
                      FileCount As Long, _
                      DirCount As Long, _
                      ListBox As ListBox)


    Dim FileName As String
    Dim DirName As String
    Dim dirNames() As String
    Dim nDir As Long
    Dim i As Long
    Dim hSearch As Long
    Dim WFD As WIN32_FIND_DATA
    Dim Cont As Long


'FIXIT: Reemplazar la función 'Right' con la función 'Right$'.                             FixIT90210ae-R9757-R1B8ZE
    If Right(path, 1) <> "\" Then path = path & "\"
        ' Buscamos por mas directorios
        nDir = 0
        ReDim dirNames(nDir)
        Cont = True
        hSearch = FindFirstFile(path & "*", WFD)
            If hSearch <> INVALID_HANDLE_VALUE Then
                Do While Cont
                    DirName = Eliminar_Nulos(WFD.cFileName)
                    ' Ignore the current and encompassing directories.
                    If (DirName <> ".") And (DirName <> "..") Then
                        ' Check for directory with bitwise comparison.
                            If GetFileAttributes(path & DirName) _
                                And FILE_ATTRIBUTE_DIRECTORY Then
                               
                                dirNames(nDir) = DirName
                                DirCount = DirCount + 1
                                nDir = nDir + 1
                                ReDim Preserve dirNames(nDir)
                           
                            End If
                    End If
                    Cont = FindNextFile(hSearch, WFD) 'Get next subdirectory.
                Loop
               
                Cont = FindClose(hSearch)
           
            End If

        hSearch = FindFirstFile(path & SearchStr, WFD)
        Cont = True
        If hSearch <> INVALID_HANDLE_VALUE Then
            While Cont
                FileName = Eliminar_Nulos(WFD.cFileName)
                    If (FileName <> ".") And (FileName <> "..") Then
                        FindFilesAPI = FindFilesAPI + (WFD.nFileSizeHigh * MAXDWORD) _
                                                                  + WFD.nFileSizeLow
                        FileCount = FileCount + 1
                        ListBox.AddItem path & FileName
                    End If
                Cont = FindNextFile(hSearch, WFD) ' Get next file
            Wend
        Cont = FindClose(hSearch)
        End If

        ' Si estos son Sub Directorios......
        If nDir > 0 Then

        For i = 0 To nDir - 1
            FindFilesAPI = FindFilesAPI + FindFilesAPI(path & dirNames(i) & "\", _
                                                SearchStr, FileCount, DirCount, ListBox)
        Next i
    End If

End Function

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Buscar y Listar archivos con cierta extensión en una computadora
Windows
shedaro 7 7,032 Último mensaje 25 Septiembre 2012, 08:33 am
por Eleкtro
Archivos recuperados de Word tras borrarlos no se abren
Windows
Minasha_22 2 3,004 Último mensaje 4 Junio 2013, 19:04 pm
por Minasha_22
¿Alguna manera de bloquear todos los archivos con determinada extensión?
Windows
Kurolox 2 2,527 Último mensaje 23 Noviembre 2014, 18:03 pm
por Eleкtro
Batche que copia archivos de determinada fecha del presente mes?
Scripting
_CrisiS_ 1 2,710 Último mensaje 25 Agosto 2022, 13:01 pm
por timer
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines