LabVIEWForum.de
Dateien in Verzeichnis auflisten - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: Weitere NI Software (/Forum-Weitere-NI-Software)
+---- Forum: DIAdem (/Forum-DIAdem)
+---- Thema: Dateien in Verzeichnis auflisten (/Thread-Dateien-in-Verzeichnis-auflisten)



Dateien in Verzeichnis auflisten - Evast - 07.06.2008 11:01

Hallo,

ich arbeite mich gerade in die Benutzung von VBS unter DIAdem ein und finde in der Dokumentation nicht die Funktion um alle Dateien in einem Verzeichnis aufzulisten. Bin für einen Tipp dankbar!

Grüße


Dateien in Verzeichnis auflisten - Carpe_DIAdem - 09.06.2008 08:22

Hallo Evast,

die Funktion lautet FileNameGet. Eine ausführliche Beschreibung und Beispiele findest du in der DIAdem-Hilfe.

Carpe DIAdem


Dateien in Verzeichnis auflisten - Evast - 10.06.2008 07:19

' schrieb:die Funktion lautet FileNameGet. Eine ausführliche Beschreibung und Beispiele findest du in der DIAdem-Hilfe.
Auf diese Funktion war ich auch schon gestoßen. Die Hilfe sagt hierzu: "Opens the standard dialog box for loading and saving files.". Ich möchte aber programmatisch alle Dateien in einem Verzeichnis auflisten, ohne Interaktion mit dem Nutzer. Dazu scheint mir diese Funktion nicht in der Lage zu sein.

Viele Grüße


Dateien in Verzeichnis auflisten - Carpe_DIAdem - 10.06.2008 13:41

Hallo Evast,

sorry, da habe ich dich wohl falsch verstanden. Es ist richtig, FileNameGet ist für eine Interaktion konzipiert. Für den von dir beschriebenen Fall kannst du den Befehl DirLstWrite verwenden.

Carpe DIAdem


Dateien in Verzeichnis auflisten - Evast - 11.06.2008 22:33

' schrieb:Für den von dir beschriebenen Fall kannst du den Befehl DirLstWrite verwenden.
Carpe DIAdem

Hallo,

danke für die Hilfe, das war es was ich suchte. Da die Funktion beschrieben wurde durch "Writes file names to an ASCII file" hatte ich darüber hinweggelesen, dass man die Dateinamen auch ohne Umweg über das Schreiben in eine Datei erhalten kann.

Ist das eigentlich auch möglich bei der Funktion 'FileNameGet', die ich in einer anderen Funktion benötige? Wenn ich hier die Spezifikation des Namens für die Zieldatei (FileDlgASCIIName) weglasse, kann ich im Dialog nur noch eine einzelne Datei öffnen. Wie kann ich auch mehrere Dateien öffnen ohne dabei eine Datei schreiben zu müssen?

Außerdem ist mir aufgefallen, dass beide Funktionen immer im DIAdem-Startordner starten, wenn 'DataReadPath' als Startpfad angegeben wird. Wie kann ich erreichen, dass der zuletzt verwendete Ordner als Ausgangspunkt verwendet wird, so dass bei Aufruf nicht die gesamte Navigation durch die Ordnerstruktur erfolgen muss? Notfalls auch durch die Verwendung von Static-Variablen im Script o.ä., wobei ich den Eindruck habe, dass es in VBS keine statischen Variablen gibt!?

Viele Grüße


Dateien in Verzeichnis auflisten - Carpe_DIAdem - 12.06.2008 09:34

Hallo Evast,

hier ein leicht modifiziertes Beispiel:

Dim MyFileNames, iCount, MyPath
MyPath = "D:Test"
Call FileNameGet("ANY", "FileRead", MyPath, "TDM data (*.tdm),*.tdm", "d:testAll.lst", True, "Data selection")

MyFileNames = Split(FileDlgFileName,"|")
For iCount = 0 To Ubound(MyFileNames)
Call msgbox(MyFileNames(iCount))
Next

MyPath gibt den gewünschten Pfad vor.
Zurzeit muss man in der Tat noch die *.LST datei angeben. (In DIAdem 11 gibt es aber einen ergänzenden Befehl bei dem das dann nicht mehhr notwendig ist - FileDlgShow). Aber schon jetzt werden die ausgewählten Dateien in einem String gespeichert (FileDlgFileName).

Carpe DIAdem


Dateien in Verzeichnis auflisten - Evast - 16.06.2008 23:39

Zitat:Zurzeit muss man in der Tat noch die *.LST datei angeben. (In DIAdem 11 gibt es aber einen ergänzenden Befehl bei dem das dann nicht mehhr notwendig ist - FileDlgShow).
OK, das wird eine Verbesserung werden.

Zitat:MyPath gibt den gewünschten Pfad vor.
Ja, das ist mir schon klar. Mein Code sieht z.Zt. ähnlich wie dieses Beispiel aus. Meine Frage war, wie ich erreichen kann, dass das Skript bei mehrfachen Aufrufen jeweils bei dem zuletzt gewählten Ordner startet (wie das in vielen Programmen üblich ist). Dazu müsste eine Möglichkeit genutzt werden diesen Pfad zwischen zwei Skript-Aufrufen zu speichern.

Vielen Dank für die Hilfe und viele Grüße


Dateien in Verzeichnis auflisten - Carpe_DIAdem - 17.06.2008 08:19

Hallo Evast,

der FileNameGet-Dialog ist ein Windows-Standard Dialog, der bei jedem Aufruf parametriert werden muss. Um das zuletzt benutzte Verzeichis beim nächsten Aufruf als Startverzeichnis zu parametrieren, muss der Inhalt der Variablen FileDlgDir in eine globale Variable zwischengespeichert werden. Am Anfang des Scripts kann geprüft werden ob die globale Variable schon existiert. Wenn nicht wird sie angelegt und initialisiert. Im anderen Fall ist der letzte Pfad der aktuelle Inhalt. Dieser wird am Ende des Scriptes gesetzt.

Dim sMyFileNames, iCount

If Not ItemInfoGet("sMyPath") Then
Call GlobalDim("sMyPath")
sMyPath = DataReadPath
End If

Call FileNameGet("ANY", "FileRead", sMyPath, "TDM data (*.tdm),*.tdm", "All.lst", True, "Data selection")
sMyFileNames = Split(FileDlgFileName,"|")
For iCount = 0 To Ubound(sMyFileNames)
Call msgbox(FileDlgDir & " - " & sMyFileNames(iCount))
Next

sMyPath = FileDlgDir


Carpe DIadem


Dateien in Verzeichnis auflisten - Evast - 18.06.2008 19:22

' schrieb:Um das zuletzt benutzte Verzeichis beim nächsten Aufruf als Startverzeichnis zu parametrieren, muss der Inhalt der Variablen FileDlgDir in eine globale Variable zwischengespeichert werden.
Damit ist die Aufgabe gelöst. Vielen Dank für die Hilfestellungen und das hilfreiche Beispiel!

Gruß