24. maj 2003 - 15:20Der er
14 kommentarer og 1 løsning
Selectbox der returnerer foldernavne
På min server har jeg en folder som hedder \zfax\users I users folderen er der forskellige brugere(foldere). Jeg mangler en selecbox som returner navnene(foldere). Kode skal kunne finde ud af hvor det ligger (c:,d:,e:)
Mener du en selectbox som indeholder alle mapper under en givet mappe? Rekursivt?
Jeg skriver normalt asp i jscript, men du kan nok se idéen her: <% fso=Server.CreateObject("Scripting.FileSystemObject"); ltReg=new RegExp("<","g"); gtReg=new RegExp(">","g"); qReg =new RegExp("\"","g");
function buildSelect(foldspec) { var bsFold var bsSubs bsFold=fso.GetFolder(Server.MapPath(""+foldspec)); bsSubs = new Enumerator(bsFold.SubFolders); %><OPTION value="<%=Server.URLEncode(foldspec)%>"><%=foldspec%><% for (; !bsSubs.atEnd(); bsSubs.moveNext()) { cDir=bsSubs.item(); cName = ""+cDir.Name; if (cName.charAt(0)!="_") { buildSelect(foldspec+cName+"/"); } } }
Det er jo nok fordi du har sat en vbscript kommando ind i starten. ;-) Som sagt er det ikke vbscript, men jscript.
Så får du noget der ligner i vbscript: <%@language=vbscript%><% Set fso=Server.CreateObject("Scripting.FileSystemObject")
function buildSelect(foldspec) Set bsFold=fso.GetFolder(foldspec) strFoldere="" for each folder in bsFold.SubFolders strFoldere=strFoldere+"<OPTION value='" & folder.Name & "'>" & folder.Name next buildSelect=strFoldere end function %> <SELECT name=userFolder><%=buildSelect("c:\zfax\users")%> </SELECT>
Set fso=Server.CreateObject("Scripting.FileSystemObject")
function buildSelect(foldspec) Set bsFold=fso.GetFolder(foldspec) strFoldere="" for each folder in bsFold.SubFolders strFoldere=strFoldere+"<OPTION value='" & folder.Name & "'>" & folder.Name next buildSelect=strFoldere end function %>
Se nu anvender vi C:\zfax\users i buildSelect - da koden skal bruges flere forskellige servere hvor mand ikke p.f.h. ved hvor \zfax\users ligger - hvordan kan man sikre sig at kode leder på alle tilgængelige drev c: d: e: etc ?
<% function buildSelect(foldspec) Dim fso,bsFold,StrFoldere,Folder,dc,d
Set fso=Server.CreateObject("Scripting.FileSystemObject") Set dc = fso.Drives
' Gennemløb array med en løkkedrevbogstav For Each d in dc Set d = fso.GetDrive(d.driveletter+":") If d.DriveType=2 then If fso.FolderExists(d.driveletter+":"+foldspec) = true Then Set bsFold=fso.GetFolder(d.driveletter+":"+foldspec) end if next
strFoldere="" for each folder in bsFold.SubFolders strFoldere=strFoldere+"<OPTION value='" & folder.Name & "'>" & folder.Name next buildSelect=strFoldere set fso=nothing set dc=nothing set bsfold=nothing end function %> <SELECT name=userFolder><%=buildSelect("\zfax\users")%> </SELECT>
Jeg er ikke en haj til det - men det her ser ud til at virke ?
Mind mig på at jeg ikke skal hjælpe dig næste gang.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.