Ao usar o objeto FILESYSTEMOBJECT para obter uma lista de arquivos em um diretório, você descobriu que não pode controlar a maneira como eles são classificados, como classificação por nome, classificação por extensão, classificação por tamanho de arquivo, etc. use uma matriz para eles serem organizados em ordem.
Se você quiser classificar por nome, será muito simples, mas se quiser classificar por tamanho ou hora de criação do arquivo, etc., será um pouco problemático. Faremos isso por meio de um array 2D.
O código a seguir demonstra como atingir nosso objetivo selecionando e classificando. Clique para classificar e clique duas vezes para classificar ao contrário.
<HTML> <CABEÇA> <TITLE>Demonstração de classificação de arquivos</TITLE> </HEAD> <CORPO> <% 'Defina um diretório de demonstração, :) DIRETÓRIO CONST = / 'Usa constantes para definir o método de classificação CONST FILE_NAME = 0 'Classificar por nome... e assim por diante ARQUIVO CONST_EXT = 1 CONST ARQUIVO_TYPE = 2 CONST ARQUIVO_SIZE = 3 ARQUIVO CONST_CREATED = 4 ARQUIVO CONST_MODIFIED = 5 ARQUIVO CONST_ACCESSED = 6 'Obtém o comando de classificação, o padrão é classificar por nome req = Solicitação(sortBy) Se Len(req) <1 Então sortBy = 0 Caso contrário, sortBy = CInt(req) req = Solicitação(priorSort) Se Len(req) <1 Então priorSort = -1 Caso contrário, priorSort = CInt(req) 'Definir ordem inversa Se sortBy = priorSort então reverso = verdadeiro classificação anterior = -1 Outro reverso = falso priorSort = sortBy Terminar se 'Em seguida, iniciamos nosso código real. . . caminho = Server.MapPath (DIRETÓRIO) Definir fso = CreateObject(Scripting.FileSystemObject) Defina theCurrentFolder = fso.GetFolder(caminho) Definir curFiles = theCurrentFolder.Files 'Faça um loop sobre esses arquivos Escureça os arquivos() ReDim theFiles(500) 'Eu configurei um tamanho aleatório currentSlot = -1 'inicia antes do primeiro slot 'Colocamos todas as informações relevantes do arquivo no array Para cada fileItem em curFiles fname = arquivoItem.Name fext = InStrRev(fnome, .) Se fext < 1 Então fext = Else fext = Mid(fname,fext+1) ftype = arquivoItem.Type fsize = arquivoItem.Size fcreate = arquivoItem.DateCreated fmod = arquivoItem.DateLastModified faccess = fileItem.DateLastAccessed atualSlot = atualSlot + 1 Se currentSlot > UBound(theFiles) Então ReDim preservar os arquivos (Slot atual + 99) Terminar se 'Coloque na matriz theFiles(currentSlot) = Array(fname,fext,ftype,fsize,fcreate,fmod,faccess) Próximo 'Agora que tudo está no array, comece o próximo passo fileCount = currentSlot 'Número de arquivos ReDim preservar os arquivos (slot atual) ' Organizar '(8 significa string) Se VarType(theFiles(0)(sortBy)) = 8 Então Se for reverso Then kind = 1 Else kind = 2 ' Classifica os caracteres Outro Se for reverso Então tipo = 3 Caso contrário tipo = 4 'Número, tempo. . . Terminar se Para i = fileCount TO 0 Etapa -1 minmax = theFiles(0)(sortBy) minmaxSlot = 0 Para j = 1 Para i Selecione o tipo de caso Caso 1 marca = (strComp(theFiles(j)(sortBy), minmax, vbTextCompare) < 0) Caso 2 marca = (strComp(theFiles(j)(sortBy), minmax, vbTextCompare) > 0) Caso 3 marca = (theFiles(j)(sortBy) <minmax) Caso 4 marca = (theFiles(j)(sortBy) > minmax) Finalizar seleção Se marcar Então minmax = osArquivos(j)(sortBy) minmaxSlot = j Terminar se Próximo Se minmaxSlot <> i Então temp = theFiles(minmaxSlot) osArquivos(minmaxSlot) = osArquivos(i) osArquivos(i) = temp Terminar se Próximo ' Terminar %> <Nome do FORM=método doSort=Get> <Tipo de ENTRADA=Nome oculto=Valor priorSort=<% = priorSort %>> <Tipo de ENTRADA=Nome oculto=Valor sortBy=-1> </FORM> <linguagem SCRIPT=JavaScript> função reSort(que) { document.doSort.sortBy.value = qual; document.doSort.submit(); } </SCRIPT> <CENTRO> <Tamanho da fonte=+2> Exibir <% = (fileCount+1) %> arquivos neste diretório <% = path %> </FONT> <P> Clique em Classificar e clique em Classificação reversa novamente <P> <TABELA Borda=1 CellPadding=3> <TR> <TH><A HREF=javascript:reSort(0);>Nome do arquivo</A></TH> <TH><A HREF=javascript:reSort(1);>Extensão</A></TH> <TH><A HREF=javascript:reSort(2);>Tipo</A></TH> <TH><A HREF=javascript:reSort(3);>Tamanho</A></TH> <TH><A HREF=javascript:reSort(4);>Tempo de criação</A></TH> <TH><A HREF=javascript:reSort(5);>Hora da última modificação</A></TH> <TH><A HREF=javascript:reSort(6);>Hora do último acesso</A></TH> </TR> <% Para i = 0 Para fileCount Response.Write <TR> & vbNewLine Para j = 0 Para UBound(theFiles(i)) Response.Write <TD> & theFiles(i)(j) & </TD> & vbNewLine Próximo Response.Write </TR> & vbNewLine Próximo %> </TABELA> </BODY> </HTML> |