VB DIR extrae nombres de archivos de más de 256 bytes
Utilice la función API FindFirstFile para resolver este tipo de problemas.
El siguiente es el código de prueba. Me tomó media hora. Tengo que agregar algunos puntos...
¿Privado? ¿Declarar?
¿Privado? ¿Declarar?Función?FindFirstFile?Lib?"kernel32"?"FindFirstFileA"?(ByVal?lpFileName?As?String,?lpFindFileData?As?WIN32_FIND_DATA)?As?Long
Privado?Declarar?Función?FindNextFile ¿Lib?"kernel32"?alias "FindNextFileA"? (ByVal?hFindFile?As?Long,?lpFindFileData?As?WIN32_FIND_DATA)?As?Long
¿Privado?Declarar?Función?FindClose?Lib?"kernel32"? (ByVal?hFindFile?As?Long)?As?Long
'Definición de longitud máxima de ruta y constantes de atributos de archivo
Private?Const?MAX_PATH?=?260
¿Privado?Const?FILE_ATTRIBUTE_ ARCHIVE?=?amp; H20
Const?FILE_ATTRIBUTE_COMPRESSED?=? >
¿Const?FILE_ATTRIBUTE_HIDDEN?=? y H2
¿Const?FILE_ATTRIBUTE_NORMAL?=? y H80
Const?FILE_ATTRIBUTE_READONLY?=? p>Const?FILE_ATTRIBUTE_SYSTEM?=? amp;H4
Const?FILE_ATTRIBUTE_TEMPORARY?=? amp;H100 'Definición de tipos de datos personalizados FILETIME y WIN32_FIND_DATA
Private?Type?FILETIME dwLowDateTime ? ¿Como?Long dwHighDateTime?As?Long
End?Type
¿Privado?Type?WIN32_FIND_DATA
dwFileAttributes?As?Long
ftCreationTime ?Como?FILETIME
ftLastAccessTime?As?FILETIME
ftLastWriteTime?As?FILETIME
nFileSizeHigh?As?Long
nFileSizeLow? ?Long
dwReserved0?As?Long
dwReserved1?As?Long
cFileName?As?String?MAX_PATH
c¿Alternativo? ?Cadena?*?14 Fin?Tipo
Privado?Sub?Command1_Click()<
/p>
Dim?sPath$,?strFileName$
sPath?=?"C:\Temp\1,2,3,4,5,6,7,8,7,8 ,9,10 1,2,3,4,5,6,7,8,9,10 1,2,3,4,5,6,7,8,9,11 1,2,3,4, 5, 6, 8, 7, 8, 9, 12 1, 3, 4, 5, 6, 8, 7, 8, 9, 13 1, 3, 4, 6, 7, 7, 8, 9, 14 1 ,3,4,5,6,7,7,8,90,141,5,6,7,80,141,6,7,8,90,15,6,7,8,80,16,17 ,18,20 12-3-4-5-6-7-8-9-10 12-3-4-5-6-7-8-9-10 12-3-4-5-6-7- 8-9- 10 12-3-4-5-6-7-8-9-10 12-3-4-5-6-7-8-9-10 12-3-4-5-6-7 -8-9 -10 12-3-4-5-6-7-8-9-10 12-3-4-5-6-7-8-9-10 12-3-4-5-6- 7-8- 9-10 12-3-4-5-6-7-8-9-10 12-3-4-5-6-7-8-9-10 12-3-4-5-6 -7-8 -9-10 12-3-4-5-6-7.txt"
Debug.Print?" Longitud de la ruta completa del archivo: ";?Len(sPath),?" Longitud del nombre del archivo: " ;?Len(sPath)?-?Len("C:/Temp/")
Dim?lHandle?As?Long?'El identificador de FindFirstFileA
Dim ?tFindData? Como?WIN32_FIND_DATA?'
lHandle?=?FindFirstFile(sPath, ?tFindData)
Si lHandle?=? - entonces
If?tFindData .dwFileAttributes? lt;gt;?&H20?¿Entonces' archivo?&H10?Directorio
MsgBox?"Archivo no encontrado:"?"Nombre de archivo:";?tFindData.cFileName
Debug.Print ?"Longitud del archivo:";?tFindData.nFileSizeLow
End?If
Else?'La consulta finaliza o se produce un error
MsgBox?"La consulta finalizó o se produjo un error"
End?If
FindClose?lHandle
End? sub