Waldgeist: Dateiordnerinhalte mit VBS auslesen

Hallo!

Wie kann ich die Unterordner eines Ordners (z.B. D:/Fotos/) mit VBS auslesen? Die Ausgabe sollte ähnlich dem Windows Explorer aussehen. Also das man erstmal alle Unterordner von "D:/Fotos/" sieht. Die könnten dann zum beispiel "SommerUrlaub" oder "Weihnachten" heißen und wenn mann dann auf "SommerUrlaub" klickt werdne alle Unterordner und Dateien von "SommerUrlaub" angezeigt. Befinden sich daran Bilder sollen diese, bei Klick, in einem Neuen Fenster geöffnet werden.

Ich hoffe es kann mir jmd. helfen...

Gruß
Waldgeist

  1. Hallo!

    Wie kann ich die Unterordner eines Ordners (z.B. D:/Fotos/) mit VBS auslesen?

    Guck mal:http://msdn.microsoft.com/library/en-us/script56/html/sgProgrammingFileSystemObject.asp

    Beste Grüße
    Viennamade

    1. Hallo!
      ein wenig hab ich ja schon mit der ganzen sache rumgespielt.
      Das kam dabei herraus:

      <HTML>
      <body>
      <script Language="VBSCRIPT">

      'Einfache HTML-Seite zur Demonstration, wie man mit VBA die Name der Unterordner eines Ordners ausliest

      DIM FSO        ' Variable für den Zugriff auf das File System Object
      DIM oFolder    ' Variable für den Ordner, in dem die Unterordner entstehen
      DIM oSubFolder ' Variable für die Unterordner
      DIM Folder     ' Variabel für den Ordner, in dem die Unterordner entstehen

      Folder = "c:"

      ' Zugriff auf das FSO herstellen
      Set FSO     = CreateObject("Scripting.FileSystemObject")

      ' Das Ordnerobjekt auf den gewünschten Ordner "zeigen" lassen
      Set oFolder = FSO.GetFolder(Folder)

      ' Jeder Unterordner in der Auflistung der SubFolders wird ausgegeben

      document.write "<table border=1>"
          document.write "<tr><td> Alle Unterordner des Ordners " & Folder & " </td></tr>"
          For Each oSubFolder in oFolder.SubFolders

      'Diese Zeile sieht komplizierter aus als sie ist! Es wird für jeden Unterordner eine Tabellenzeile und eine Zelle
      'angelegt. Dann der eigentliche Link auf den Ordnernamen = Startordner + Unterordner erstellt.
      'Danach kommt der restliche HTML Code. Ist doch garnicht schwer - oder? :-)

      document.write "<tr><td> <a href="& Folder & oFolder.Name & oSubFolder.Name & ">"& oSubFolder.Name &"</a></tr></td>"
          Next

      'Tabelle schliessen

      document.write "</table>"

      </script>
      </body>
      </HTML>

      Nur jetzt komme ich nicht weiter.
      Er soll mir, wenn ich dann einen Ordner anklickt soll er mir die Unterordner dieses Ordners darfstellen. Ich hab aber grade keine Idee wie ich das machen soll.
      Vielleicht wisst ihr ja noch was.

      1. Hallo!

        Ich würde ja gerne Deinen Quelltext ausprobieren, dafür müßte ich aber Diverses installieren und das mag ich nicht.
        Aber mir scheint, daß Du auf der HTML-Seite "oben" den Objekten (Folder, etc.) fixe Werte - zB. "c:" - zuordnest.
        Dort, wo Du den Verweis ("<a href ...") erstellst, linkst Du dann aber auf den entsprechenden Ordner und hier denke ich liegt der Fehler. Du müsstest m.E. auf die gleiche Seite (deren Quelltext Du hier gepostet hast) verweisen mit einem Querystring dessen Inhalt aus dem Namen des angeklickten Ordners besteht. Diesen Querystring dann für die Objektzuordnung verwenden.

        Beste Grüße
        Viennamade

        1. Den Fien Wert den ich zuordne der ist ja nur mein Startwert. Das der alle Unterordner von C:\ untersucht. Dann müsste er aber irgendwie mit Startwert&SubFolder weiter machen. Weiß halt nur nie wie.

          Was für Diverse sachen müsstest denn da Installieren?

          1. Hallo!

            Den Fien Wert

            ?

            Dann müsste er aber irgendwie mit Startwert&SubFolder weiter machen. Weiß halt nur nie wie.

            Dein Link lautet zur Zeit
            document.write "<tr><td> <a href="& Folder & oFolder.Name & oSubFolder.Name & ">"& oSubFolder.Name &"</a></tr></td>"
            also
            <a href="c:\ + irgendwelche Ordner ...
            ME. sollte er lauten:
            <a href="dieseHtmlDatei?geklickter Ordner" ...
            Und wenn dieseHtmlDatei aufgerufen wird benutzt Du aus dem Querystring "geklickter Ordner=x" das "x" um es dem entsprechenden Objekt zuzuordnen.

            Was für Diverse sachen müsstest denn da Installieren?

            Den scripting-host denke ich. Das Dictionary Object. Diverse Sicherheitseinstellungen runtersetzen. Vielleicht auch mehr, weiß ich aber nicht so genau.

            Gruß
            Viennamade

            1. Das Script was ich da gepostet hab Funktioniert ja.
              Es erfüllt nur nicht alle Funktionen so wie es gern hätte.

  2. hi,
    ich bin grad nicht so bei vbs, drum jscript und das nur ganz grob voller fragen, risiken und was weiß ich.
    nur eine grobe richtung ... feilen ist deine sache ...
    <script>
    //only[EvIl]IE/jscript ;-)
    var ausgabe;
    function machIndex(myDir)
    {
      var fso, f, fc,ffc, s;
      fso = new ActiveXObject("Scripting.FileSystemObject");
      f = fso.GetFolder(myDir);
      fc = new Enumerator(f.SubFolders);
      s="------------------Dirs--------------------------<br>";
      for (; !fc.atEnd(); fc.moveNext())
      {
        s += "<a href='javascript:machIndex(""+slashIt(fc.item())+"")'>"+fc.item()+"</a>";
        s += "<br>";
      }
      s+="-----------------Files--------------------------<br>";
      ffc= new Enumerator(f.files);
      for (; !ffc.atEnd(); ffc.moveNext())
      {
        s += ffc.item(); //hier prüfen was ist ein bild [gif|jpg|png](true = html-maskieren. bzw neue function: zeigeBildInNeuemFenster(dieserPfad))
        s += "<br>";
      }
    //  return(s);
    ausgabe.innerHTML=s;
    }
    //document.write(z);    //das ist echt unpassend hier
    function init(){
    ausgabe=document.getElementById('aus');
    machIndex('C:/WINDOWS');  //hier kommt der absolute pfad der root rein ....
    /*cool ist es dem script beizubringen seinen wohnort zu erkennen*/
    }
    //have nice fun with '' backslash
    function slashIt(str){
      str+='';
      str=str.replace(/\/g,'/');
    //alert(str);
      return(str);
    }
    </script>
    <body onload='init()'>
    <div id='aus'></div>
    *f**** nun ist da keine history mehr.
    mein problem?
    wenn du unbedingt vbs benutzen möchtest suche bei ms nach: VBSCRIP5.CHM -> das wird helfen obrieges script zu portieren.
    online wohl asp.chm.
    gruß
    IeNurDose