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)
| | | | |-+  ayuda eliminar archivo varias veces..
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ayuda eliminar archivo varias veces..  (Leído 3,205 veces)
musicaward

Desconectado Desconectado

Mensajes: 25



Ver Perfil WWW
ayuda eliminar archivo varias veces..
« en: 17 Enero 2009, 13:26 pm »

hola primero que nada un saludo a toda esta gran comunidad... quisiera saber si me podrian ayudar...

No se si se podria colocar un timer... con la funcion kill para que elimine cierto archivo cada x segundos... que se encuentre por ejemplo .. en :

C:\archivo.txt

y que no cause error cuando no lo encuentre..

porque si uso la funcion kill... solo lo elimina una vez.. pero quiero que elimine tal archivo cada vez que lo vea en esa ruta...

o en todo caso... se podria hacer ? que "archivo.txt" no tenga permisos de escribir ni ejecutarse desde vb?...

gracias..


En línea

skapunky
Electronik Engineer &
Colaborador
***
Desconectado Desconectado

Mensajes: 3.667


www.killtrojan.net


Ver Perfil WWW
Re: ayuda eliminar archivo varias veces..
« Respuesta #1 en: 17 Enero 2009, 13:41 pm »

Lo ideal, esque utilizes fileexists y si existe el archivo eliminarlo, aunque hay la forma cutre....

Código:
on error resume next
kill "loquequieras"
...

Saludos.


En línea

Killtrojan Syslog v1.44: ENTRAR
musicaward

Desconectado Desconectado

Mensajes: 25



Ver Perfil WWW
Re: ayuda eliminar archivo varias veces..
« Respuesta #2 en: 17 Enero 2009, 16:42 pm »

Citar
on error resume next
kill "loquequieras"
...

si pero con esa funcion solo lo puedo eliminar "una" vez... como podria hacer.. para que al hacer click... o check .. elimine tal archivo varias veces..o sea aunq vuelva a colocar por ejemplo ese archivo en esa ruta mientras ande activado ... lo "elimine"  ubicado en :

Citar
C:\archivo.txt

no se si se podria hacer con un timer.. o algo similar... no se si me dejo a entender..

gracias igual...
« Última modificación: 17 Enero 2009, 16:45 pm por musicaward » En línea

seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: ayuda eliminar archivo varias veces..
« Respuesta #3 en: 17 Enero 2009, 16:56 pm »

para salir de paso usa un Timer, aunque hay una posibilidad de poder detectar cuando se crea un archivo en una carepta sin Timer, con Apis que monitorean...y si existe lo borras...en el api-guide hay un ejemplo...

saludos.
En línea

musicaward

Desconectado Desconectado

Mensajes: 25



Ver Perfil WWW
Re: ayuda eliminar archivo varias veces..
« Respuesta #4 en: 17 Enero 2009, 17:27 pm »

Citar
para salir de paso usa un Timer, aunque hay una posibilidad de poder detectar cuando se crea un archivo en una carepta sin Timer, con Apis que monitorean...y si existe lo borras...en el api-guide hay un ejemplo...

saludos.

me interesa mucho eso es justo lo que ando buscando... podreis citar.. el ejemplo o decirme el nombre  , disculpa es que no se donde buscarlo.... gracias
« Última modificación: 17 Enero 2009, 17:30 pm por musicaward » En línea

aaronduran2


Desconectado Desconectado

Mensajes: 790



Ver Perfil WWW
Re: ayuda eliminar archivo varias veces..
« Respuesta #5 en: 17 Enero 2009, 18:30 pm »

Algo sencillo, con un Timer en el formulario:

Código
  1. Private Sub Timer1_Timer()
  2.    On Error Resume Next
  3.    Kill Environ("HOMEDRIVE") & "\Archivo.txt"
  4. End Sub

Pon el Timer con el intervalo de tiempo que quieras que pase antes de comprobar si existe y eliminar el archivo.

Saludos  ;)
En línea

seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: ayuda eliminar archivo varias veces..
« Respuesta #6 en: 17 Enero 2009, 18:38 pm »

si yo decia lo mismo, pero sin timer...cuando detecte que existe que lo elimine, yo hice un programa asi que detecta cuando existe o se cambia un archivo...esperame que edito el post y te paso un ejemplo:

necesitas 2 botones, uno para emepezar y el otro para parar el monitoreo de la carpeta..


Código
  1. Option Explicit
  2.  
  3. Private Const TIME_OUT = &H102
  4. Private Const FILE_SHARE_DELETE = &H4
  5. Private Const FILE_SHARE_READ = &H1
  6. Private Const FILE_SHARE_WRITE = &H2
  7. Private Const FILE_ALL_ACCESS = &H1FF
  8.  
  9. Private Const FILE_LIST_DIRECTORY = &H1
  10. Private Const OPEN_EXISTING = &H3
  11. Private Const FILE_FLAG_BACKUP_SEMANTICS = &H2000000
  12. Private Const FILE_FLAG_OVERLAPPED = &H40000000
  13. Private Const FILE_ATTRIBUTE_NORMAL = &H80
  14.  
  15. Private Enum FILE_NOTIFY_CHANGE
  16.    FILE_NOTIFY_CHANGE_FILE_NAME = &H1
  17.    FILE_NOTIFY_CHANGE_DIR_NAME = &H2
  18.    FILE_NOTIFY_CHANGE_ATTRIBUTES = &H4
  19.    FILE_NOTIFY_CHANGE_SIZE = &H8
  20.    FILE_NOTIFY_CHANGE_LAST_WRITE = &H10
  21.    FILE_NOTIFY_CHANGE_LAST_ACCESS = &H20
  22.    FILE_NOTIFY_CHANGE_CREATION = &H40
  23.    FILE_NOTIFY_CHANGE_SECURITY = &H100
  24. End Enum
  25.  
  26. Private Enum FILE_ACTION
  27.    FILE_ACTION_ADDED = &H1
  28.    FILE_ACTION_REMOVED = &H2
  29.    FILE_ACTION_MODIFIED = &H3
  30.    FILE_ACTION_RENAMED_OLD_NAME = &H4
  31.    FILE_ACTION_RENAMED_NEW_NAME = &H5
  32. End Enum
  33.  
  34. Private Type OVERLAPPED
  35.    Internal As Long
  36.    InternalHigh As Long
  37.    offset As Long
  38.    OffsetHigh As Long
  39.    hEvent As Long
  40. End Type
  41.  
  42. Private Type FILE_NOTIFY_INFORMATION
  43.    dwNextEntryOffset As Long
  44.    dwAction As FILE_ACTION
  45.    dwFileNameLength As Long
  46.    wcFileName(1024 - 1) As Byte 'Buffer de 1024 bytes
  47. End Type
  48.  
  49. Private Declare Function ResetEvent Lib "kernel32" (ByVal hEvent As Long) As Long
  50. Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
  51. Private Declare Function CreateEvent Lib "kernel32" Alias "CreateEventA" (ByVal lpEventAttributes As Long, ByVal bManualReset As Long, ByVal bInitialState As Long, ByVal lpName As String) As Long
  52. Private Declare Function GetOverlappedResult Lib "kernel32" (ByVal hFile As Long, lpOverlapped As OVERLAPPED, lpNumberOfBytesTransferred As Long, ByVal bWait As Long) As Long
  53. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  54. Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
  55. Private Declare Function ReadDirectoryChangesW Lib "kernel32.dll" (ByVal hDirectory As Long, ByVal lpBuffer As Long, ByVal nBufferLength As Long, ByVal bWatchSubtree As Boolean, ByVal dwNotifyFilter As FILE_NOTIFY_CHANGE, lpBytesReturned As Long, ByVal lpOverlapped As Long, ByVal lpCompletionRoutine As Long) As Long
  56. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Long, ByVal Source As Long, ByVal Length As Long)
  57.  
  58. 'Variable para el monitoreo
  59. Dim fstop As Boolean
  60.  
  61. Private Sub Command1_Click()
  62.  
  63.    Dim hDir As Long 'Handle del Directorio
  64.    Dim hEvent As Long 'Handle del Evento
  65.  
  66.    fstop = False
  67.  
  68.    'aca pones la carpeta a monitorear y le pasa todos los flags
  69.    hDir = CreateFile("C:\", FILE_LIST_DIRECTORY, FILE_SHARE_READ Or FILE_SHARE_DELETE Or FILE_SHARE_WRITE, 0&, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS Or FILE_FLAG_OVERLAPPED, 0&)
  70.  
  71.    'Crea el evento
  72.    hEvent = CreateEvent(0&, True, True, "DirEvent")
  73.  
  74.    Dim oLap As OVERLAPPED
  75.  
  76.    With oLap
  77.        .hEvent = hEvent
  78.    End With
  79.  
  80.    Dim buf(0 To 1024 * 5 - 1) As Byte
  81.  
  82.    'para obtener la info del archivo
  83.    Dim dirBuf As FILE_NOTIFY_INFORMATION
  84.  
  85.    Dim nUsed As Long
  86.  
  87.    Call ReadDirectoryChangesW(hDir, VarPtr(buf(0)), UBound(buf) + 1, True, FILE_NOTIFY_CHANGE_FILE_NAME, nUsed, VarPtr(oLap), 0&)
  88.  
  89.    Dim bstr As String 'para el nombre del archivo
  90.    Dim pos As Long 'para la ruta
  91.    Dim ret As Long
  92.  
  93.    Do
  94.        pos = 0
  95.        'esperamos un evento
  96.        ret = WaitForSingleObject(hEvent, 100)
  97.        If ret <> TIME_OUT Then
  98.            CopyMemory VarPtr(dirBuf), VarPtr(buf(pos)), Len(dirBuf)
  99.            Debug.Print dirBuf.dwFileNameLength & " " & dirBuf.dwNextEntryOffset
  100.  
  101.            Select Case dirBuf.dwAction
  102.                Case FILE_ACTION_ADDED:
  103.                    Debug.Print "Creaste ";
  104.                Case FILE_ACTION_MODIFIED:
  105.                    Debug.Print "Modificaste ";
  106.                Case FILE_ACTION_REMOVED:
  107.                    Debug.Print "Borraste ";
  108.                Case FILE_ACTION_RENAMED_NEW_NAME:
  109.                    Debug.Print "Renombraste a ";
  110.                Case FILE_ACTION.FILE_ACTION_RENAMED_OLD_NAME:
  111.                    Debug.Print "Nombre Anterior ";
  112.            End Select
  113.  
  114.            bstr = dirBuf.wcFileName
  115.            bstr = Left(bstr, dirBuf.dwFileNameLength / 2)
  116.            Debug.Print bstr
  117.  
  118.            While dirBuf.dwNextEntryOffset <> 0
  119.  
  120.                pos = pos + dirBuf.dwNextEntryOffset
  121.                CopyMemory VarPtr(dirBuf), VarPtr(buf(pos)), Len(dirBuf)
  122.  
  123.                Debug.Print dirBuf.dwFileNameLength & " " & dirBuf.dwNextEntryOffset
  124.  
  125.                Select Case dirBuf.dwAction
  126.                    Case FILE_ACTION_ADDED:
  127.                        Debug.Print "Creaste ";
  128.                    Case FILE_ACTION_MODIFIED:
  129.                        Debug.Print "Modificaste ";
  130.                    Case FILE_ACTION_REMOVED:
  131.                        Debug.Print "Borraste ";
  132.                    Case FILE_ACTION_RENAMED_NEW_NAME:
  133.                        Debug.Print "Renombraste a ";
  134.                    Case FILE_ACTION.FILE_ACTION_RENAMED_OLD_NAME:
  135.                        Debug.Print "Nombre Anterior ";
  136.                End Select
  137.  
  138.                bstr = dirBuf.wcFileName
  139.                bstr = Left(bstr, dirBuf.dwFileNameLength / 2)
  140.                Debug.Print bstr
  141.            Wend
  142.  
  143.            'reseteamos y volvemos a empezar
  144.            ResetEvent hEvent
  145.            Call ReadDirectoryChangesW(hDir, VarPtr(buf(0)), UBound(buf) + 1, True, FILE_NOTIFY_CHANGE_FILE_NAME, nUsed, VarPtr(oLap), 0&)
  146.        End If
  147.        DoEvents
  148.    Loop While Not fstop
  149.  
  150.    'Cerramos los Handles
  151.    CloseHandle hEvent
  152.    CloseHandle hDir
  153. End Sub
  154.  
  155. Private Sub Command2_Click()
  156.    'paramos el monitoreo
  157.    fstop = True
  158. End Sub
  159.  
  160. Private Sub Form_Unload(Cancel As Integer)
  161.    'empezamos el monitoreo
  162.    fstop = True
  163. End Sub
  164.  

saludos.
« Última modificación: 17 Enero 2009, 19:07 pm por seba123neo » En línea

musicaward

Desconectado Desconectado

Mensajes: 25



Ver Perfil WWW
Re: ayuda eliminar archivo varias veces..
« Respuesta #7 en: 17 Enero 2009, 19:44 pm »

seba123neo.. en esa linea:

Citar
hDir = CreateFile("C:\", FILE_LIST_DIRECTORY, FILE_SHARE_READ Or FILE_SHARE_DELETE Or FILE_SHARE

pondria ? C:\archivo.txt  o estoy equivocado... si es asi hazmelo saber gracias...por el gran codigo
En línea

Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: ayuda eliminar archivo varias veces..
« Respuesta #8 en: 17 Enero 2009, 20:47 pm »

Hola, lo que te indica seba está perfecto, pero con la funcion Dir en un timer (5000) no es suficiente ?

If Dir("C:\archivo.txt") <> "" Then Kill "C:\archivo.txt"

Saludos



« Última modificación: 17 Enero 2009, 20:50 pm por Dessa » En línea

Adrian Desanti
musicaward

Desconectado Desconectado

Mensajes: 25



Ver Perfil WWW
Re: ayuda eliminar archivo varias veces..
« Respuesta #9 en: 17 Enero 2009, 20:59 pm »

gracias Dessa.. tu ayuda me funciono perfecto..... igual gracias a  seba123neo   pueden cerrar el tema .. si es que se puede  ::)
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] BUCLE FOR se repite varias veces
Scripting
wareware 3 7,412 Último mensaje 28 Agosto 2011, 22:59 pm
por leogtz
LOGMEIN Pro Varias Veces?
Dudas Generales
BILLYJOSEPH 0 2,913 Último mensaje 7 Diciembre 2011, 16:53 pm
por BILLYJOSEPH
Mi ordenador se congela varias veces al dia « 1 2 »
Windows
serik34 16 8,067 Último mensaje 7 Septiembre 2013, 17:12 pm
por buite
Página web con varias veces el mismo archivo
Desarrollo Web
MA40 7 5,172 Último mensaje 19 Febrero 2014, 17:41 pm
por MA40
Ayuda python,eliminar lineas de un archivo una por una
Scripting
Panic0 4 4,846 Último mensaje 8 Marzo 2021, 23:49 pm
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines