Ir para conteúdo
Fórum Script Brasil
  • 0

Listar Arquivos Com Nome Específico


renatacm

Pergunta

Olá, pessoal!

Novamente venho em busca do conhecimento de vocês. Há um tempo atrás eu abri um tópico parecido com esse, mas, na época, acabei estruturando meu código de outra maneira e não precisei utilizar o FSO como havia sido sugerido.

Agora, me deparo com a seguinte situação:

Dentro de uma pasta, existem ao todo 10 arquivos distintos, deste 10, 3 tem o seguinte nome: AEaaaammdd01.pdf (onde aaaa é o ano, mm é o mês e dd é o dia).

Preciso capturar e listar estes 3 arquivos e montar um link assim:

Ata Extraordinária de dd/mm/aaaa

Ata Extraordinária de dd/mm/aaaa

Ata Extraordinária de dd/mm/aaaa

Ou seja, vou precisar capturar parte do nome do arquivo (a data) e transformá-la para o padrão dia/mês/ano.

1ª pergunta: dá pra fazer isso com o FSO?

2ª pergunta: tem um SUBSTRING que eu possa utilizar para capturar apenas o intervalo que desejo do nome do arquivo?

3ª pergunta: alguém pode montar um exemplo disso para mim?

Obrigadinha, pessoal.

Bjocas...

;oÞ

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

Fiz meio na pressa da uma olhada se funciona.

<%Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set principal = FSO.GetFolder("c:\pasta") 
Set arquivos = principal.Files

For each arq in arquivos
   if left(arq.name,2) = "AE" then
      response.write "<a href='" & arq.name &"'> Ata Extraordinária de " & mid(arq.name,9,2) & "/" & mid(arq.name,7,2) & "/" & mid(arq.name,3,4)& "</a><br>"
   end if
next%>

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Cyber, me desculpe a demora no retorno...

Só agora consegui entrar no fórum.

Vou testar esse código que você me passou e depois posto se funcionou.

Só me tira uma outra dúvida, pra colocar o caminho relativo do servidor o esquema é o mesmo ou tem aquele lance de VIRTUAL ou FILE ?!?

Bjocas...

;oÞ

Link para o comentário
Compartilhar em outros sites

  • 0
Cyber, me desculpe a demora no retorno...

Só agora consegui entrar no fórum.

Vou testar esse código que você me passou e depois posto se funcionou.

Só me tira uma outra dúvida, pra colocar o caminho relativo do servidor o esquema é o mesmo ou tem aquele lance de VIRTUAL ou FILE ?!?

Bjocas...

;oÞ

voce pode usar server.mappath para pegar o endereço fisico do servidor, um exemplo:

Response.write Server.Mappath("index.asp")

esse código mostraria o endereço fisico do servidor, tipo e:\servidor\dominio\wwwroot\files\index.asp ai é so adaptar no código que eu passei.

Link para o comentário
Compartilhar em outros sites

  • 0
ordenar alfabeticamente ?

Renata!!

Isso vai dar uma briga!!!!

Vai ter que jogar os dados num vetor e ordenar-los!!!

Complicado, mas não impossivel..

Realmente não é facil, olha aki um exemplo de indexação de um vetor.

''' Regular Array Sort

Sub QuickSort(vec,loBound,hiBound,SortField,SortDir)
  '==--------------------------------------------------------==
  '== Sort a multi dimensional array on SortField            ==
  '==                                                        ==
  '== This procedure is adapted from the algorithm given in: ==
  '==    ~ Data Abstractions & Structures using C++ by ~     ==
  '==    ~ Mark Headington and David Riley, pg. 586    ~     ==
  '== Quicksort is the fastest array sorting routine for     ==
  '== unordered arrays.  Its big O is n log n                ==
  '==                                                        ==
  '== Parameters:                                            ==
  '== vec       - array to be sorted                         ==
  '== SortField - The field to sort on (1st dimension value) ==
  '== loBound and hiBound are simply the upper and lower     ==
  '==   bounds of the array's "row" dimension. It's probably ==
  '==   easiest to use the LBound and UBound functions to    ==
  '==   set these.                                           ==
  '== SortDir   - ASC, ascending; DESC, Descending           ==
  '==--------------------------------------------------------==
  if not (hiBound - loBound = 0) then
      Dim pivot(),loSwap,hiSwap,temp,counter
      Redim pivot (Ubound(vec,2))
      SortDir = UCase(SortDir)

      '== Two items to sort
      if hiBound - loBound = 1 then
        if (SortDir = "ASC") then
            if FormatCompare(vec(loBound,SortField),vec(hiBound,SortField)) > FormatCompare(vec(hiBound,SortField),vec(loBound,SortField)) then Call SwapRows(vec,hiBound,loBound)
        else
            if FormatCompare(vec(loBound,SortField),vec(hiBound,SortField)) < FormatCompare(vec(hiBound,SortField),vec(loBound,SortField)) then Call SwapRows(vec,hiBound,loBound)
        end if
      End If

      '== Three or more items to sort
      For counter = 0 to Ubound(vec,2)
        pivot(counter) = vec(int((loBound + hiBound) / 2),counter)
        vec(int((loBound + hiBound) / 2),counter) = vec(loBound,counter)
        vec(loBound,counter) = pivot(counter)
      Next

      loSwap = loBound + 1
      hiSwap = hiBound

      do
        '== Find the right loSwap
        if (SortDir = "ASC") then
            while loSwap < hiSwap and FormatCompare(vec(loSwap,SortField),pivot(SortField)) <= FormatCompare(pivot(SortField),vec(loSwap,SortField))
              loSwap = loSwap + 1
            wend
        else
            while loSwap < hiSwap and FormatCompare(vec(loSwap,SortField),pivot(SortField)) >= FormatCompare(pivot(SortField),vec(loSwap,SortField))
              loSwap = loSwap + 1
            wend
        end if
        '== Find the right hiSwap
        if (SortDir = "ASC") then
            while FormatCompare(vec(hiSwap,SortField),pivot(SortField)) > FormatCompare(pivot(SortField),vec(hiSwap,SortField))
              hiSwap = hiSwap - 1
            wend
        else
            while FormatCompare(vec(hiSwap,SortField),pivot(SortField)) < FormatCompare(pivot(SortField),vec(hiSwap,SortField))
              hiSwap = hiSwap - 1
            wend
        end if
        '== Swap values if loSwap is less then hiSwap
        if loSwap < hiSwap then Call SwapRows(vec,loSwap,hiSwap)
      loop while loSwap < hiSwap

      For counter = 0 to Ubound(vec,2)
        vec(loBound,counter) = vec(hiSwap,counter)
        vec(hiSwap,counter) = pivot(counter)
      Next

      '== Recursively call function .. the beauty of Quicksort
        '== 2 or more items in first section
        if loBound < (hiSwap - 1) then Call QuickSort(vec,loBound,hiSwap-1,SortField,SortDir)
        '== 2 or more items in second section
        if hiSwap + 1 < hibound then Call QuickSort(vec,hiSwap+1,hiBound,SortField,SortDir)
  end if
End Sub  'QuickSort

Sub SwapRows(ary,row1,row2)
  '==------------------------------------------==
  '== This proc swaps two rows of an array     ==
  '==------------------------------------------==

  Dim x,tempvar
  For x = 0 to Ubound(ary,2)
    tempvar = ary(row1,x)
    ary(row1,x) = ary(row2,x)
    ary(row2,x) = tempvar
  Next
End Sub  'SwapRows

function FormatCompare(sOne,sTwo)
  '==------------------------------------------==
  '==  Checks sOne & sTwo, returns sOne as a   ==
  '==  Numeric if both pass isNumeric, if not  ==
  '==  returns sOne as a string.               ==
  '==------------------------------------------==

    if (isNumeric(Trim(sOne)) AND isNumeric(Trim(sTwo))) then
        FormatCompare = CDbl(Trim(sOne))
    else
        FormatCompare = Trim(sOne)
    end if
end function

Sub PrintArray(vec,loRow,hiRow,markCol)
  '==------------------------------------------==
  '== Print out an array  Highlight the column ==
  '==  whose number matches param markCol      ==
  '==------------------------------------------==

  Dim ColNmbr,RowNmbr
  Response.Write "<table border=""1"" cellspacing=""0"">"
  For RowNmbr = loRow to hiRow
    Response.Write "<tr>"
    For ColNmbr = 0 to (Ubound(vec,2) - 1)
      If ColNmbr = markCol then
        Response.Write "<td bgcolor=""FFFFCC"">"
      Else
        Response.Write "<td>"
      End If
      Response.Write vec(RowNmbr,ColNmbr) & "</td>"
    Next
    Response.Write "</tr>"
  Next
  Response.Write "</table>"
End Sub  'PrintArray

Link para o comentário
Compartilhar em outros sites

  • 0
Ai, meu Deus!!! ohmy.gif

Eu vou chorar!!! sad.gif

Isso chora, desabafa que é melhor (evita ulceras nervosas) laugh.gif

Uma idéia:

Tratar o nome dos arquivos, pois quando o FSO lista os arquivos de uma pasta ele lista em ordem alfabética, sendo assim c você tiver os nomes dos arquivos estruturados não sera necessário indexar o vetor.

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Ufa!!!

Se ele já lista em ordem alfabética, já tá de bom tamanho.

Com relação às datas, ele vai listar da mais antiga pra mais recente (por causa do formato aaaammdd) ele consegue colocar em ordem crescente...

Já está ótimo!!!

Mas eu ainda não testei o primeiro script q você me passou... estou adaptando ainda...

Assim que eu terminar, eu posto o resultado.

Bjocas...

;oÞ

Link para o comentário
Compartilhar em outros sites

  • 0

<%Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set pasta = FSO.GetFolder(Server.MapPath("condominios\"&SESSION("parte1")&"\Atas"))
Set arquivos = pasta.Files

For each arq in arquivos    	
if left(arq.name,1) = "A" then  	
response.write "<tr>"
response.write "<td height='18' align='center' valign='middle'>&nbsp;</td>" 
response.Write "<td height='18' align='center' valign='middle'><img src='imagens/link.gif' width='10' height='10'></td>"
response.Write "<a href='" & arq.name &"'> Ata Extraordinária de " & mid(arq.name,9,2) & "/" & mid(arq.name,7,2) & "/" & mid(arq.name,3,4)& "</a>"
response.write "</tr>"
end if
next%>

O código ficou assim pessoal.

E funcionou.

Mais uma vez, obrigada pelo help!

Bjocas...

;oÞ

PS: Podem fechar o tópico.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...