Pregunta

¿Voy loco? No puedo encontrar una manera de controlar la primer archivo en una carpeta con FileSystemObject (ASP clásico). Con la mayoría de las colecciones se podría pensar que el índice 0 o 1 podría funcionar, pero IIS dice "no válida llamada a procedimiento o argumento".

Ninguna de estas 2 últimas líneas de trabajo:

Set oFileScripting = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFileScripting.GetFolder(sFolder)
Set oFiles = oFolder.Files
If oFiles.Count = 0 Then Response.Write "no files"
Response.Write oFiles(0).Name
Response.Write oFiles.Item(1).Name

Soy que es mega-estúpida, o no hay ninguna manera de utilizar un índice para acceder a esta colección en particular?

¿Fue útil?

Solución

La colección de archivos no es un conjunto, y no contiene funcionalidad de acceso aleatorio. Si necesita absolutamente esta funcionalidad, lo más parecido a imitar sería iterar a través de la carpeta y crear una nueva matriz que contiene los nombres de los archivos encontrados, utiliza esta nueva matriz como la fuente de acceso aleatorio, y crear objetos de archivo de la valores de matriz.

ReDim FileArray(oFiles.Count)

i = 0
For Each oFile In oFiles
   FileArray(i) = oFile.Name
   i = i + 1
Next

Set oFile = oFileScripting.GetFile(sFolder + "\" + FileArray(0))

Sin duda, no recomiendo esto si es posible evitarlo.

Otros consejos

No, pero se puede enumerar y realizar un seguimiento del índice de sí mismo:

Set oFileScripting = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFileScripting.GetFolder(sFolder)
Set oFiles = oFolder.Files
If oFiles.Count = 0 Then Response.Write "no files"

i = 0
For Each oFile In oFiles
   Response.Write i & " = " & oFile.Name
   i = i + 1
Next
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top