# Verzeichnisnamen auslesen mit VBScript, WinCCflex



## Hotsch (7 Juli 2009)

Tach,
wie oben erwähnt benutzte ich VBScript unter WinCCflex. Nun wollte ich sämtliche Name der Unterverzeichnisse eines Ordners in Stringvariablen schreiben. 
Diese Aufgabe habe ich schon erfolgreich mit Dateien eines Ordners geschaft mit der folgenden Zeile:

```
If  SmartTags(Pfadname) = False Then s=fs.dir(pathName+"*.txt") End If
```

Nun hatte ich eigentlich angenommen das ganze wird mit folgendem Code auch mit Verzeichnissen funktionieren.

```
If SmartTags(Pfadname) = True Then s=fs.dir(pathName+"*.") End If
```


Dem ist aber leider nicht so, da die Variable "s" keine Werte zurückliefert.  Mit welchem Befehl kann ich nur Verzeichnisse auswählen?
Das Betriebssystem ist Windows CE.


----------



## Larry Laffer (7 Juli 2009)

Hallo,
wenn ich dich richtig verstanden habe, dann müßte das folgende dir helfen :
	
	



```
[COLOR=black]    Dim fs, f, f1, fc, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(Such_Verzeichnis)
    Set fc = f.SubFolders
    For Each f1 in fc
        s = s & f1.name 
        s = s &  vbCrLf
    Next
[/COLOR]
```
Gruß
LL


----------



## Hotsch (7 Juli 2009)

Ist das mit dem Script in flexible möglich? Scripting.FileSystemObject ist doch nur in der Version für "richtiges" Windows drin und nicht bei Windows CE oder täusche ich mich da? 
Ich bekomme in der Zeile:


> Set fs = CreateObject("Scripting.FileSystemObject")


 eine Fehlermeldung das die ActiveX Komponente nicht erstellt werden kann.


----------



## Larry Laffer (7 Juli 2009)

in einer Runtime-Umgebung würde das funktionieren. 
Bei einem TP oder MP kann ich dir dazu nichts sagen (dort setze ich so etwas nicht ein). Es gibt in der Rubrik FAQ aber von Volker einen Beitrag, in dem es auch eine Liste mit den möglichen VB-Script-Befehlen unter Windows CE gibt. Und zwar *hier* ...

Gruß
LL


----------



## Hotsch (7 Juli 2009)

Jo danke, aber das hab ich schon gefunden. Das was ich absolut nicht kapiere ist wenn ich statt:

```
If SmartTags(Pfadname) = True Then s=fs.dir(pathName+"*.txt") End If
```
das Eingebe:

```
If SmartTags(Pfadname) = True Then s=fs.dir(pathName+"*.*") End If
```

dann werden alle Dateien und Ordner aufgelistet, so wie man es aus Dos kennt, aber *. funktioniert nicht.


----------



## Larry Laffer (7 Juli 2009)

Ich habe mir geade mal die Beschreibung des von dir verwendeten DIR-Befehls angesehen ...
Ist dir aufgefallen, dass du dem Befehl auch noch ein Attribut mit übergeben kannst ? Damit könntest du dann festlegen, was du lesen willst ...

Wenn du z.B. das folgende machst :
	
	



```
[COLOR=#000000][COLOR=#0000cc][/COLOR][FONT=Courier New][COLOR=#006600]If [/COLOR][COLOR=#0000cc]SmartTags[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000cc]Pfadname[/COLOR][COLOR=#006600]) = [/COLOR][COLOR=#0000cc]True Then s[/COLOR][COLOR=#006600]=[/COLOR][COLOR=#0000cc]fs[/COLOR][COLOR=#006600].[/COLOR][COLOR=#0000cc]dir[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000cc]pathName[/COLOR][COLOR=#006600]+[/COLOR][COLOR=#cc0000]"*.*" [SIZE=4][B],[/B][/SIZE] [B][SIZE=4]16[/SIZE][/B][/COLOR][COLOR=#006600]) [/COLOR][COLOR=#0000cc]End [/COLOR][/FONT][COLOR=#006600][FONT=Courier New]If  [/FONT]
[/COLOR][/COLOR]
```
... dann solltest du nur noch Unterverzeichnisse zurück gelifert bekommen ... Test das doch mal ...

Gruß
LL


----------



## Hotsch (7 Juli 2009)

Besten dank, das hat geklappt. Ich hab das zwar auch schon vorher ausprobiert, aber da wollte es irgendwie nicht. Nun läuft es aber.

Nachtrag:
Für den Fall das es jemanden intressiert ich hab meinen Fehler gefunden. Ich hab immer 



> If SmartTags(Pfadname) = True Then s=fs.dir(pathName , 16) End If



benutzt, also *.* weggelassen. Dies mag der Compiler wohl nicht so gern.


----------



## Rafaelius (7 Oktober 2015)

Servus,

bist du nach 6 jahren einen Code, der alle Unterordner bis zum letzten Ordner eines "Startordners" durchsucht .
Da bin ich grad dabei.


----------

