Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

koal40

FSO - Quantidade de SubPastas

Recommended Posts

Olá! :D

Estou com um problema, que também é um "desafio" :P, estou montando uma árvore de pastas (como no explorer), estou usando FSO, até ai tudo bem, mas gostaria de saber se tem alguma função para que sejam identificadas subpastas de subpastas, ou seja:

 

Pasta Principal

-pasta 1

--pasta1.1

-pasta2

--pasta2.1

---pasta2.1.1

----pasta2.1.1.1

--pasta2.2

-pasta3

 

gostaria que a pasta "pasta2.1.1.1" fosse identificada sem que eu tenha que ficar fazendo o FSO varias vezes até chegar na ultima.

A sulução seria possivel? seria com while, for?

 

Obrigado! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já fiz algo assim, para estudo, e resolvi criando uma função recursiva.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa!

Acho que o Salgado endenteu o que quis dizer, (se sim .. como?? http://forum.imasters.com.br/public/style_emoticons/default/blush.gif http://forum.imasters.com.br/public/style_emoticons/default/blush.gif http://forum.imasters.com.br/public/style_emoticons/default/blush.gif ), é assim:

 

Por exemplo eu tenho 11 pastas uma dentro da outra, se eu fizer regressivo seria da 11ª pasta até a primeira? se sim não teria como eu achar outras subpastas... Bem, continuando, tenho 11 pastas, gostaria de saber se tem como eu abrir as pastas e achar subpastas, sem ter que fazer 10 vezes o mesmo codigo (se eu fizer 10 vezes e tiver 11 pastas, a ultima pasta não será encontrada).

 

Obrigado. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se dá para fazer isso mas ...Enquanto objPasta tiver subpasta------ Escreve objPasta------ objPasta = objPasta.subpastaFim Enquanto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz algo assim:

Function Varrer(Atual, Geral, Passada)
If InStr(Geral,Atual) =1 Then
	Set Pasta = FSO.GetFolder(Atual)
	For Each SubPasta In Pasta.SubFolders
		For x = 0 To Passada
			SubPastas = SubPastas &"-"
		Next
		SubPastas = SubPastas &"<A HREF=?Drive="& Drive &"&Pasta="& server.URLEncode(SubPasta.Path) &">"& SubPasta.Name &"</A><BR>"
		SubPastas = SubPastas & Varrer(SubPasta.Path, Geral, (Passada + 1))
	Next
	Set Pasta = Nothing
End If
Varrer = SubPastas
End Function

If Session("Var_Drive")<>"" Then
Drive=Session("Var_Drive")
For Each Pasta In FSO.GetDrive(drive).RootFolder.SubFolders
	Exibir = Exibir &"<A HREF=?Drive="& Drive &"&Pasta="& server.URLEncode(Pasta.Path) &">"& Pasta.Name &"</A><BR>"
	Exibir = Exibir &Varrer(Pasta.Path, Session("Var_Pasta"), 0)
Next
End If
Response.Write(Exibir)

Dessa forma eu exibo as Subpastas de um drive específico e caso eu tenha selecionado uma pasta no meu script ele lista as subpastas dela. Função recursiva é aquela que dentro dela executa ela mesma novamente. Os parâmetros significam:

Atual: A pasta atual que você quer listar;

Geral: A pasta "Base" que você iniciou; e

Passada: Qual a "passada" que está, serve apenas para colocar os "-" que indicara em qual nível está dentro da pasta "Base".[/code]

Compartilhar este post


Link para o post
Compartilhar em outros sites

ops li errado, opa, funcionou, mas só tenho mais um problema.. http://forum.imasters.com.br/public/style_emoticons/default/yay.gif http://forum.imasters.com.br/public/style_emoticons/default/yay.gif http://forum.imasters.com.br/public/style_emoticons/default/yay.gif http://forum.imasters.com.br/public/style_emoticons/default/yay.gif , é assim: o código do salgado, num consegui fazer funcionar, e é nesse codigo que eu estava atras, pois presiso dos niveis de cada pasta, você pode me dar um exemplo? obrigado! http://forum.imasters.com.br/public/style_emoticons/default/blush.gif http://forum.imasters.com.br/public/style_emoticons/default/blush.gif http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

 

obs.: tentei com a explicação..

Compartilhar este post


Link para o post
Compartilhar em outros sites

:D :D agora foi!

Function Recursive(local,nivel) dim fso, pasta, spasta,level Set fso = Server.CreateObject("Scripting.FileSystemObject") set pasta = fso.GetFolder(local) For Each spasta in pasta.SubFolders 'for i=0 to level for i=0 to nivel response.Write("-") next Response.Write(LCase(spasta.Name) & "<br />") call Recursive(spasta.Path,abs(nivel+1)) Next nivel = nivel-1 End Function dim diretorio call Recursive(diretorio,0)

assim deu... brigado!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá! Voltei! http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

Estou com mais um problema, :P :P , é que estou montando uma árvore, olha o exemplo chegando ai em baixo: http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

 

Pasta Pai

-pasta1

-pasta2

--pasta2.1

--pasta2.2

---pasta2.2.1

----pasta2.2.2.1

-pasta3

--pasta3.1

---pasta3.1.1

 

para o js formar a árvore acima são necessários esses valores:

 

(0,-1,Pasta Pai) << esse não precisa se preocupar :P

(1,0,pasta1)

(2,0,pasta2)

(3,2,pasta2.1)

(4,2,pasta2.2)

(5,4,pasta2.2.1)

(6,5,pasta2.2.2.1)

(7,0pasta3)

(8,7,pasta3.1)

(9,8,pasta3.1.1)

 

A lógica é:

 

(id,*,nome)

 

* = Id da pasta que está contida a subpasta(no caso a subpasta é ela mesma) Exemplo:

(71,0) << pasta normal (está no diretorio selecionado

(72,71) << subpasta (está dentro da pasta com id 71)

 

Obs.: Para ficar até mais facil, seria muito bom se desse para saber quantas subpastas a próxima pasta vai ter, ai eu continuo, mas não estou conseguindo, muito obrigado! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.