Pergunta

Am I ficando louco? Não consigo encontrar uma maneira de se apossar do primeiro arquivo em uma pasta com o FileSystemObject (ASP clássico). Com a maioria das coleções você acha que o índice de 0 ou 1 trabalho poder, mas IIS diz "chamada de procedimento inválido ou o argumento".

Nenhuma destas últimas 2 linhas de trabalho:

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

Estou sendo mega-estúpidas, ou que não há maneira de usar um índice para acessar esta coleção particular?

Foi útil?

Solução

A coleção de arquivos não é um Array, e não contém funcionalidade de acesso aleatório. Se você absolutamente precisar dessa funcionalidade, a coisa mais próxima de imitá-lo seria para percorrer a pasta e criar uma nova matriz contendo os nomes dos arquivos encontrados, use esta nova matriz como fonte de acesso aleatório, e criar objetos File do valores da 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))

Eu certamente não recomendo este se é em tudo evitável.

Outras dicas

Não, mas você pode enumerá-los e acompanhar o índice se:

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top