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


 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (Moderadores: Novlucker, seba123neo, kub0x, Eleкtro)
| | | |-+  ayuda con manejo de archivos en vb.net 2008
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ayuda con manejo de archivos en vb.net 2008  (Leído 888 veces)
**Aincrad**

Desconectado Desconectado

Mensajes: 162



Ver Perfil
ayuda con manejo de archivos en vb.net 2008
« en: 20 Septiembre 2017, 20:11 »

hola a todos los del foro,  :D .

hoy me he encontrado con 2 pequeñas trabas.

yo quiero eliminar todos los archivos con formato {"*.vbs", "*.cmd", "*.js", "*.wsf", "*.ink", "*.bat"} de  un disco cualquiera.

pero solamente se eliminar uno por uno con este code

Código
  1.        Dim dirPath As String = Form2.FolderBrowserDialog1.SelectedPath
  2. For Each fichero As String In Directory.GetFiles( _
  3.        dirPath, _
  4.        "*.vbs")
  5.            File.Delete(fichero)
  6.        Next

lo que quiero es borrar todos esos archivos con un solo codigo. como le hago?


bien la segunda pregunta es como desocultar las carpetas de un diretorio en
vb.net 2008.

el code tiene que implementar la funcion de :
Código
  1. Dim dirPath As String = Form2.FolderBrowserDialog1.SelectedPath

para el directorio. no se si me entienden.  :silbar:

         creo que es mucho pedir, aunque son pequeñas funciones las que pido. XD
 
                                              Gracias de antemano.





En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.270


ASMático


Ver Perfil WWW
Re: ayuda con manejo de archivos en vb.net 2008
« Respuesta #1 en: 20 Septiembre 2017, 20:24 »

Si te refieres a que solo borras 1 extension por vez, puedes hacer un for iterando cada extension (que tendrías en un array de String), y nada, llamar a la función GetFiles pasándole la variable de la extensión como parámetro.

Para el tema de archivos ocultos, puedes cambiarle los atributos. Aquí tienes la función y un ejemplo: https://msdn.microsoft.com/en-us/library/system.io.file.setattributes%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396


En línea

**Aincrad**

Desconectado Desconectado

Mensajes: 162



Ver Perfil
Re: ayuda con manejo de archivos en vb.net 2008
« Respuesta #2 en: 20 Septiembre 2017, 20:54 »

gracias por la respuesta, pero no me funciono.

no se si me explique bien, lo que quiero es :

1) que borre todos los archivos con formato {"*.vbs", "*.cmd", "*.js", "*.wsf", "*.ink", "*.bat"} en por ejemplo el disco extraible I y todos sus subdirectorios.

2) y lo otro de atributos sobre archivos ya lo había visto pero .
lo que necesito es un code para desocultar todas las carpetas y subcarpetas de un
disco extrible I.
                                         gracias por comentar.  ;D
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.270


ASMático


Ver Perfil WWW
Re: ayuda con manejo de archivos en vb.net 2008
« Respuesta #3 en: 20 Septiembre 2017, 21:05 »

Bueno, en ese caso lo que buscas es acceder recursivamente a un árbol de carpetas. Actualmente, has listado 1 directorio. Te falta, por cada carpetanen ese directorio, listarla también, recursivamente.
¿Qué tal llevas el tema de funciones recursivas?

También puede haber alguna función que te lo haga solo. Puedes ver algún comentario de este post: https://stackoverflow.com/questions/929276/how-to-recursively-list-all-the-files-in-a-directory-in-c
En línea

**Aincrad**

Desconectado Desconectado

Mensajes: 162



Ver Perfil
Re: ayuda con manejo de archivos en vb.net 2008
« Respuesta #4 en: 20 Septiembre 2017, 22:05 »

creo que me entendiste mal.

en pocas palabras lo que quiero en lo de desocultar carpetas es un code sencillo
algo como esto.

Código
  1. FolderBrowserDialog1.ShowDialog()
  2. Dim dirPath As String = FolderBrowserDialog1.SelectedPath
  3.        File.SetAttributes(dirPath, FileAttributes.Normal)

PD: el primer problema ya lo solucione
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.270


ASMático


Ver Perfil WWW
Re: ayuda con manejo de archivos en vb.net 2008
« Respuesta #5 en: 20 Septiembre 2017, 22:14 »

Entendí bien, pero es que un "code sencillo" pues... Haz el código, y ya. Que sea sencillo qué importa.
Si es lo que buscas, aquí lo tienes ya hecho https://stackoverflow.com/questions/17273650/setting-file-attributes-recursively-subfolders
En línea

Eleкtro
🌍 🕉️ 🛏️ Novato Astral 🛏️ 🕉️ 🌍 y...
Moderador Global
***
Desconectado Desconectado

Mensajes: 9.222


El sentido común es el menos común de los sentidos


Ver Perfil
Re: ayuda con manejo de archivos en vb.net 2008
« Respuesta #6 en: 21 Septiembre 2017, 02:41 »

Hola.

Yo el primer problema no lo entiendo, basicamente por que aquí ya estás utilizando una iteración recursiva en busca de archivos con distintas extensiones:


Así que en teoría eso ya sabes como resolverlo, pero bueno, te hago saber que la función System.IO.Directory.GetFiles() tiene una sobrecarga para que le indiques si la búsqueda debe realizarse de forma recursiva o no:


Dicho método no provee ninguna sobrecarga para especificar más de una extensión o patrón de búsqueda, para eso ya estabas utilizando la otra función, My.Computer.FileSystem.GetFiles().

Si quieres sustituir la función My.Computer.FileSystem.GetFiles() por System.IO.Directory.GetFiles() y conservando la funcionalidad de buscar varias extensiones, pues sí o sí tienes que llamar a dicha función más de una vez para concatenar los resultados en una colección. Ejemplo:

Código
  1. Dim dirPath As String = ".\"
  2. Dim fileExts As String() = {"*.vbs", "*.cmd", "*.js", "*.wsf", "*.ink", "*.bat"}
  3.  
  4. Dim filePaths As New List(Of String)
  5. For Each fileExt As String In fileExts
  6.    filePaths.AddRange(Directory.GetFiles(dirPath, String.Format("*.{0}", fileExt), SearchOption.AllDirectories))
  7. Next
  8.  
  9. For Each filePath As String In filePaths
  10.    Debug.WriteLine(filePath)
  11. Next



Código
  1. File.SetAttributes(dirPath, FileAttributes.Normal)

Eso es incorrecto, ya que así no solo estás eliminando el atributo Hidden, sino también todos los demás atributos que hayan sido asignados al archivo.

Tienes que conservar esos otros atributos. Ejemplo:

Código
  1. Dim filePath As String = "C:\file.txt"
  2. Dim attribs As FileAttributes = File.GetAttributes(filePath)
  3.  
  4. File.SetAttributes(filePath, attribs And Not FileAttributes.Hidden)




el code tiene que implementar la funcion de :
Código
  1. Dim dirPath As String = Form2.FolderBrowserDialog1.SelectedPath

para el directorio. no se si me entienden.  :silbar:

No, no lo entiendo bien. Supongo que te refieres a que quieres visualizar las carpetas ocultas en el árbol de carpetas de la ventana de diálogo FolderBrowserDialog, pues bien, eso no puedes hacerlo. El componente FolderBrowserDialog respeta la configuración del usuario, así que si el usuario no tiene activada la opción para ver archivos y carpetas ocultas, el componente no las mostrará.

De todas formas, una de las peores decisiones que un programador de .NET bajo tecnología WinForms puede tomar es utilizar el componente FolderBrowserDialog, ya que es límitadísimo y obsoleto, pues no le han modificado el diseño desde los 90. ¡Ni siquiera puedes introducir una ruta de directorio para navegar directamente!, no, tienes que clickar en los nodos hasta aburrirte. Es de lo peor, todo lo opuesto a productivo.



Por ese motivo te recomiendo encarecidamente que utilices los componentes gratuitos de Ooki, que son un wrapper de los diálogos modernos del "buscador" de carpetas:




PD: Insisto, ningún diálogo de carpetas te va a mostrar carpetas ocultas a menos que la opción de mostrar archivos y carpetas ocultas esté activada en el sistema. Puedes activarla tu mismo, aquí abajo te muestro como hacerlo, pero ten en cuenta que llevar a cabo este tipo de actos se considera intrusismo (un programa intrusivo):

Código
  1. Imports Microsoft.Win32

Código
  1. Using reg As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default)
  2.    reg.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", writable:=True).
  3.        SetValue("Hidden", 1, RegistryValueKind.DWord)
  4. End Using

Saludos.
« Última modificación: 21 Septiembre 2017, 02:45 por Eleкtro » En línea


[/cent
**Aincrad**

Desconectado Desconectado

Mensajes: 162



Ver Perfil
Re: ayuda con manejo de archivos en vb.net 2008
« Respuesta #7 en: 21 Septiembre 2017, 17:47 »

hola, Elektro. lo que queria decir en

Citar
el code tiene que implementar la funcion de :
Código
Código
  1. Dim dirPath As String = Form2.FolderBrowserDialog1.SelectedPath

para el directorio. no se si me entienden.  :silbar:

solamente queria decir , que utilizaria el FolderBrowserDialog para seleccionar
el directorio donde se encontraban las carpetas ocultas. no queria visualizarlas
eso como tu dijiste es imposible.


un ejemplo de lo que queria era algo asi:

Código
  1. FolderBrowserDialog1
  2. Dim dirPath As String = FolderBrowserDialog1.SelectedPath
  3.  
  4. Dim filePath As String = dirPath
  5. Dim attribs As FileAttributes = File.GetAttributes(filePath)
  6.  
  7. File.SetAttributes(filePath, attribs And Not FileAttributes.Hidden)
  8.  

era con FolderBrowserDialog1 seleccionar un disco extraible o una carpeta,
y después el code desoculta todo lo que esta dentro de la carpeta que seleccione.


en fin logre hacerlo de la siguiente manera:

Código
  1. FolderBrowserDialog1
  2. Dim dirPath As String = FolderBrowserDialog1.SelectedPath
  3. Dim Pr As New Process
  4. Dim Psi As New ProcessStartInfo("Cmd.Exe")
  5. Psi.Arguments = "/C attrib -r -a -s -h " & dirPath & "*.* /S /D "
  6. Pr.StartInfo = Psi
  7. Pr.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
  8. Pr.Start()

ejecuta la cmd oculto y con el argumento attrib .

eso era lo que queria desocultar todas las carpetas y archivos de un directotio seleccionado.
En línea

NEBIRE


Desconectado Desconectado

Mensajes: 641


Ver Perfil
Re: ayuda con manejo de archivos en vb.net 2008
« Respuesta #8 en: 21 Septiembre 2017, 20:09 »

Ya, pero con "-r -s -h -a", básicamente estás "desoclutando" (como tú dices), y al tiempo retirando los otros atributos (Sistema, solo lectura...).

Y respecto de obtener los ficheros de diferentes extensiones, es una pérdida de rendimeinto, buscar en una carpeta cada vez por una determinada extensión.

Como mínimo, obtener una vez todos los ficheros de una carpeta... y luego a lo sumo iterar por cada extensión. entiéndase la diferencia...
Una idea es: Getfiles(, ComoEste) que exige releer varias veces y obtener el listado y filtrarlo, (ambas cosas) por cada extensión,
Con obtener: una sola vez el listado: GetallFiles(DeEstaCarpeta) y luego en esa lista buscar los de determinada extensión.

Más óptimo a base de algo más de código, es todavía, obtener una lista de todos los ficheros de esa carpeta y luego en un bucle interno:

Código:
lista = getAllFiles(DeLaCarpetaX)
Por cada fichero en la lista
   Seleccionar casos para fichero.getExtension ' Tomar la extension del fichero actual en el bucle
       Caso: "*.vbs", "*.cmd", "*.js", "*.wsf", "*.ink", "*.bat"
            lo que quieras hacer
   Fin seleccion
Repetir en bucle

   
En línea

**Aincrad**

Desconectado Desconectado

Mensajes: 162



Ver Perfil
Re: ayuda con manejo de archivos en vb.net 2008
« Respuesta #9 en: 21 Septiembre 2017, 20:39 »

Más óptimo a base de algo más de código, es todavía, obtener una lista de todos los ficheros de esa carpeta y luego en un bucle interno:

Código:
lista = getAllFiles(DeLaCarpetaX)
Por cada fichero en la lista
   Seleccionar casos para fichero.getExtension ' Tomar la extension del fichero actual en el bucle
       Caso: "*.vbs", "*.cmd", "*.js", "*.wsf", "*.ink", "*.bat"
            lo que quieras hacer
   Fin seleccion
Repetir en bucle


Umm. no había pensado hacer eso. en verdad podría ser mas optimo , ya que con la solución que encontré tarda mucho.
En línea

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

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA MANEJO DE ARCHIVOS EN C++
Programación C/C++
chicashi5 1 3,302 Último mensaje 15 Enero 2010, 14:49
por yiti007
Ayuda en manejo de Archivos en Lenguaje C
Programación C/C++
theluigy13etv 3 2,025 Último mensaje 9 Diciembre 2011, 01:28
por rir3760
ayuda con manejo de archivos en c
Programación C/C++
tamyta_19 4 833 Último mensaje 24 Abril 2015, 17:03
por tamyta_19
Ayuda con MANEJO DE ARCHIVOS
Programación C/C++
felixgz 1 318 Último mensaje 2 Marzo 2016, 23:36
por carolabeatle
Ayuda con Manejo de archivos!
Programación C/C++
pedro0620 1 402 Último mensaje 9 Septiembre 2016, 16:02
por AlbertoBSD
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines