Discussion:
Contar archivos
(demasiado antiguo para responder)
Gabriel
2006-03-09 02:28:27 UTC
Permalink
Hola, necesito ayuda referente a contar los archivos existentes en una
carpetra especifica.

Gracias
[_(V)_i_c_K_] ™
2006-03-09 05:05:43 UTC
Permalink
Se me ocurren dos maneras bastante fáciles:

la primera, es incluir un control FileListBox (intrínseco de VB) en el form, poniendolo invisible y asignandole la propiedad Path obtendrias el listado de archivos, y lo tratarías como un listbox ...

Cantidad = File1.ListCount

y la otra forma:

con un objeto FileSystemObject...

agregando la referencia de "Microsoft Scripting Runtime" al proyecto.. harias lo siguiente:

Dim Fso As New FileSystemObject
Dim Carpeta As Folder
Dim Ruta As String
Ruta = App.Path
txtRuta = Ruta
'Set Fso = CreateObject("Scripting.FileSystemObject")
Set Carpeta = Fso.GetFolder(Ruta)
MsgBox "hay " & CStr(Carpeta.Files.Count) & " archivos con un total de " & CStr(Carpeta.Size) & " bytes, en " & Ruta, vbInformation, "Cantidad de archivos"

Set Carpeta = Nothing
Set Fso = Nothing

Podés evitar utilizar la referencia , creando el objeto con "CreateObject", pero yo prefiero agregar la referencia, asi tenes una guia o ayuda con los métodos y propiedades de cada objeto FSO...

Nota: el archivo scrrun.dll debe ser distribuido con tu aplicación (aunque xp ya lo tiene y creo que w9x tambien)


tambien podrias hacerlo con APIs...
--
Saludos.

Mick
VB6 SP6 / WinXP SP2 / SQLSvr 2K

------------------------------------
Post by Gabriel
Hola, necesito ayuda referente a contar los archivos existentes en una
carpetra especifica.
Gracias
SoftJaén
2006-03-09 07:15:20 UTC
Permalink
Post by Gabriel
necesito ayuda referente a contar los archivos existentes en una
carpetra especifica.
Hola, Gabriel:

Si no deseas utilizar funciones de la API de Windows, usar controles, o
hacer referencia a cualquier biblioteca ActiveX, quizás te pueda servir la
siguiente función de usuario:

Private Function GetFiles(ByVal folder As String) As Long

Dim file As String
Dim n As Long

' Obtenemos el primer archivo
file = Dir(folder, vbArchive + vbHidden + _
vbNormal + vbReadOnly + vbSystem)

Do While file <> ""
' Contador de archivos
n = n + 1
' Obtenemos los siguientes archivos
file = Dir
Loop

' Devolvemos el número de archivos
GetFiles = n

End Function

Si deseas conocer el número de todos los archivos, simplemente llamarías a
la función de la siguiente manera:

Dim n As Long

n = GetFiles("C:\Windows\*.*")

MsgBox "Número de archivos: " & CStr(n)

Si por el contrario, quieres conocer sólo el número de archivos de una
cierta extensión, a la ruta de la carpeta, le añadirías la extensión de los
archivos cuyo número deseas conocer:

n = GetFiles("C:\Windows\*.txt)

Un saludo
--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Lluís Franco
2006-03-09 07:56:21 UTC
Permalink
:-)
Hola,

La opción más eficiente:

FindFirstFile: Fast Directory File Count
http://vbnet.mvps.org/code/fileapi/countfiles.htm

FindFirstFile: Performance Comparison - FSO vs. API
http://vbnet.mvps.org/code/fileapi/fsoapicompare.htm

Saludos,
--
Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]
--
Web: http://www.uyssoft.com
Blog: http://msmvps.com/lfranco
--
(Guía de netiquette del foro)
http://www.uyssoft.com/MSNews.aspx?sm=10
FIMARGE, S.A.
Principat d'Andorra
***@ODIO_EL_SPAMfimarge.ad
Tel.: +376 805 100
Fax: +376 824 500
--
Mi Perfil MVP en:
https://mvp.support.microsoft.com/profile=02aa1615-1a2f-4202-bc3f-aec297d967d2
--
This posting is provided "AS IS" with no warranties, and confers no rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho
Loading...