Just nu i M3-nätverket
Jump to content

Filhantering


GronK

Recommended Posts

Jag vill lista alla mappar och alla under mappar dom har och alla dom har osv.. i all evighet =)

Lite som DIRTREE i MSdos

 

Dir.nr.11

----Dir.nr.21

----Dir.nr.22

--------Dir.nr.31

----Dir.nr.23

Dir.nr.12

----Dir.nr.24

--------Dir.nr.32

 

Jag började så här men d funkade inte...

 

<%
Dim strPath 
Dim objFSO
Dim objFolder
Dim objItem
				
strPath = "files/"

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

Set objFolder = objFSO.GetFolder(Server.MapPath(strPath))

For Each objItem In objFolder.SubFolders
  	If InStr(1, objItem, "_vti", 1) = 0 Then
	response.write(objItem.Name)
		if objItem.Name<>"" then
			strPath = "files/" &amp; objItem.Name &amp; "/"
			objFolder = objFSO.GetFolder(Server.MapPath(strPath))
			For Each objItem In objFolder.SubFolders
 				If InStr(1, objItem, "_vti", 1) = 0 Then
				response.write(objItem.Name)
				End If
			Next
		end if
	End If
Next
%>

någon som har förslag på hur jag ska göra eller har sett något färdigt script någonstans man kan tjuvtitta på =)

 

 

 

[inlägget ändrat 2002-11-04 11:27:16 av GronK]

Link to comment
Share on other sites

Du är nästan klar.

 

Det enda du behöver göra är att skriva om det till en rekursiv funktion.

 

Dvs

Hämta root-katalog

 

SkrivUtInfo(root)

Om fil skriv ut filnamn, annars anropa SkrivUtInfo(katalog)

 

osv...

 

/David

 

Link to comment
Share on other sites

Hmmm =)

Jag får inte till det...

 

om du kan förklara lite mer ingånde hur det ska fungera...

 

I mitt script så hadde jag teorin att jag skulle lista alla mappar och när den listar första mappen så byter mappan och listar alla mappar i den...

 

men mitt script funkar inte av två orsaker

1. Den blir sur när man försöker byta objFolder. det funkar inte att loopa i mapp2.

2. Jag vet inte riktigt hur jag ska återvända till rooten för att fortsätta lista.

 

Och sedan är det ju så att även om mitt script funkade så skulle den bara lista 2 under mappar. jag vill ju att den skall lista alla även om det ligger 30 under mappar i varandra.

 

Link to comment
Share on other sites

Här är ett exemple som listar folders i en träd modul.

 

Filerna får du lägga till själv men är ju inte så svårt..

 

<%
Dim sPath 
Dim oFS
Dim oFolder

sPath = "C:\winnt"

Set oFS = Server.CreateObject("Scripting.FileSystemObject")

Set oFolder = oFS.GetFolder(sPath)


call showFolders(oFolder, sPath, 0)

set oFolder = nothing
set oFs = nothing

function showFolders(oFolder, sPath, iLevel)
Dim oItem

For each oItem in oFolder.subFolders
	for iInt = 0 to iLevel
		response.write "-"
	next

	response.write oItem.name & "<br>"
	sTPath = sPath & "\" & oItem.Name
	Call showFolders(oFS.GetFolder(sTPath), sTPath, iLevel +1)
next
end function 

 

- Magnus

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

[inlägget ändrat 2002-11-04 20:36:17 av Magnus Gladh]

Link to comment
Share on other sites

Å jag som har för mig att någon ansåg rekursion vara värdelös, akademisk dynga ;)

 

--

.Wey

 

..I’m the king of all time, nothing is impossible in my all powerful mind.

 

Link to comment
Share on other sites

Har jag... ???

Jag ber om ursäkt om jag på något vis förolämpat någon. Jag försökte bara förklara att Magnus Gladhs script var lite över min förmåga att förstå. Men är på inget sätt otacksam för hans eller någons hjälp för den delen.

 

Link to comment
Share on other sites

Rekursion kan vara riktigt trevligt, men det gäller att veta vad man gör, annars blir det alldeles inåt h--e rekursivt, med en hängning eller stack overflow som följd....;)

 

Link to comment
Share on other sites

Jag har slitit mig i håret efter ett liknande script på filhantering.

 

Jag vill ha samma funktion att lista alla foldrar i Exchange 2000 på webben.

 

Kan du ge mig ett tipps hur jag gör om scriptet i detta inlägg till att fungera i min kod?

 

Detta script tar fram namnet på ”Min_Exchange_Folder”

I den foldern finns det under mappar som i sin tur har undermappar.

Hur kan jag ändra scriptet så den loopar namnet (skriver ut namnet) på alla foldrar/underfoldrar som ligger i min ”Min_Exchange_Folder”?

 

 

 

strProfileInfo = strServer & vblf & strMailbox

Set objSession = Server.CreateObject("MAPI.Session")

objSession.Logon , , , False, , True, strProfileInfo

Set objInfoStores = objSession.InfoStores

 

For i = 1 To objInfoStores.Count

If objInfoStores.Item(i)= "Public Folders" Then

Set objInfoStore=objInfoStores.Item(i)

Exit For

End If

Next

 

bstrPublicRootID = objInfoStore.Fields.Item( &H66310102 ).Value

Set objTopFolder = objSession.GetFolder(bstrPublicRootID, objInfoStore.ID)

Set objFolders = objTopFolder.Folders

Set objFolder = objFolders.GetFirst()

 

Do Until objFolder.Name = "Min_Exchange_Folder"

Set objFolder=objFolders.GetNext()

Response.Write(objFolder.Name)

Loop

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...