Toon posts:

[Javascript] Files in directory listen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Voor mijn eerste topic hier heb ik een fijne vraag.

De geschiedenis; Ik ben bezig met een active-desktop te schrijven met javascript. Dit lukt al aardig.
Nu heb ik nog enkele problemen 1 daarvan is dat ik op het moment nog altijd mijn webserver moet laten opstarten om de bestanden uit map x te listen opdat deze in een menuu gezet kunnen worden.

Ik gebruik hiervoor ActiveX.

Mijn huidige code ziet er als volgt uit;
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function readDir(){ 
      var folder = "D:/Documenten en settings/Joris/Bureaublad/"; 
     var objFSO = new ActiveXObject("Scripting.FileSystemObject"); 
      
     var objFolder = objFSO.GetFolder(folder); //Zet het De FSO-pointer in de juiste directory en zet de volledige inhoud van de directory in de var  
     var files = objFolder.Files //Haal de files uit objFolder en steek ze in files, zonder mappen 
      
     for(i=0; i <= files.length; i++){ 
          var pos = files[i].indexOf( '.' , files[i].length-1 ); 
          var ext = files[i].substr(pos, files[i].length); 
                 
                      var name = files[i].substring(0, pos); 
                           if(name.length >= 10){ 
                              filename = name.substring(0,10); 
                              filename += " ... "+ext; 
                    }else{ 
                         filename= name+ext; 
                    } 
                    document.getElementbyId("browser").innerHTML += "<li><a title=\""+files[i]+"\" class=\"files\" onClick=\"ShellExJ('"+folder+file+"')\">"+filename+"</a></li>\r\n"; 

                         document.alert("Test"); 
     } 

}


Het grootste probleem is nu dat er echt geen ouput is, zelfs document.alert("Test"); heeft geen effect.

Ik kan de fout niet vinden, waarschijnlijk omdat ik er al te lang op staar.

mvg

JorisL

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 01-12 23:19

DizzyWeb

Ondertiteld

Doe eens voor die hele lus een alert met files.length? Hoeveel files vind ie eigenlijk? Want als dat 0 is, kan dat wel wat verklaren.

Verwijderd

Topicstarter
Je hebt gelijk, hij zegt nu 'undefinded'.

Ik heb nu nog wat meer gezocht, en heb ontdekt dat het al bij het aanmaken van het ActiveX-object fout gaat;
var objFSO = new ActiveXObject("Scripting.FileSystemObject");
Daar gaat het fout.

heb er nu hetvolgende achter gezet:
if(objFSO){document.write("blaat");}else{document.write("error");

Dit geeft geen output, niks.

[ Voor 23% gewijzigd door Verwijderd op 15-03-2007 18:38 ]


Verwijderd

Topicstarter
Subtiel schopje in de hoogte; echt niemand die weet wat ik fout doe?

  • dB90
  • Registratie: Oktober 2004
  • Laatst online: 04-10 00:10
D:/Documenten en settings/Joris/Bureaublad/?

Misschien stomme vraag maar moet dat geen Documents and Settings zijn?

en dan zo: D:\Documents and Settings\Joris\Bureaublad\

Dus backslashes ipv slashes?

[ Voor 27% gewijzigd door dB90 op 17-03-2007 19:55 ]

Webberry Webdevelopment


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08 14:36
Hoe wordt dit stukje javascript uitgevoerd? Objecten als FileSystemObject kan je niet in een html pagina maken. Dat kan wel als je javascript uitvoert door WScript/CScript.

Verder is (als ik het goed heb) de files property geen gewone js array. Je moet een Enumerator gebruiken om er doorheen te lopen.

| Toen / Nu


Verwijderd

Topicstarter
dB90 schreef op zaterdag 17 maart 2007 @ 19:53:
D:/Documenten en settings/Joris/Bureaublad/?

Misschien stomme vraag maar moet dat geen Documents and Settings zijn?

en dan zo: D:\Documents and Settings\Joris\Bureaublad\

Dus backslashes ipv slashes?
Nope, settings moet met kleine letters.

@superrembo;
zie startpost. Is als desktop.
De geschiedenis; Ik ben bezig met een active-desktop te schrijven met javascript. Dit lukt al aardig.
Nu heb ik nog enkele problemen 1 daarvan is dat ik op het moment nog altijd mijn webserver moet laten opstarten om de bestanden uit map x te listen opdat deze in een menuu gezet kunnen worden.
Niemand een ander idee?

  • Foutlook
  • Registratie: Februari 2001
  • Niet online
Verwijderd schreef op maandag 19 maart 2007 @ 16:02:

Nope, settings moet met kleine letters.
Ehm, hij doelde meer op de 'en' die wellicht vervangen moet worden door 'and' :)

  • dB90
  • Registratie: Oktober 2004
  • Laatst online: 04-10 00:10
Ja en documents ipv documenten en backslashes ipv slashes maar ik heb geen idee of dat wat uitmaakt verder... :p

Webberry Webdevelopment


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08 14:36
Windows zegt de eerste keer dat 't script uitgevoerd dat het mogelijk onveilig is en vraagt of je het wel wil uitvoeren. Heb je hier misschien op nee geklikt? Misschien staat het ergens in de registry nu geblokkeerd.

Verder gaat het script niet werken omdat objFolder.Files geen js-array is. En in een loopje telkens een element opvragen en dan de innerHTML appenden is ranzig en traag.

| Toen / Nu


Verwijderd

Topicstarter
Voor, iedereen die niet geloofd dat het pad naar de folder klopt:
Afbeeldingslocatie: http://img77.imageshack.us/img77/774/screenhunter03ew4.gif

@superrembo:
Ik heb niet op nee geklikt. Verder, kan je misschien eens uitleggen wat objFolder.Files dan wel is?
Hoe kan ik een array dan beter ergens neerzetten?
Dat innerHTML heb je gelijk in.

Ik heb mischien nog wel iets gevonden.
http://www.webdeveloper.c...light=Directory+files+FSO

net gevonden. morgen middag kan ik gaan testen.

[ Voor 25% gewijzigd door Verwijderd op 19-03-2007 22:49 ]


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08 14:36
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function getFiles(path) {
    var files = [];
    var fso = new ActiveXObject('Scripting.FileSystemObject');
    var folder = fso.getFolder(path);
    for (var fc = new Enumerator(folder.files); !fc.atEnd(); fc.moveNext()) {
        files.push(fc.item());
    }
    return files;
}

function test() {
    var myFiles = getFiles('C:/');
    alert(myFiles.join('\n'));
}


Zie MSDN

| Toen / Nu


Verwijderd

Topicstarter
Bedankt.

Denk dat dit nog net iets beter gaat werken :D
Pagina: 1