Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
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!
' 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.
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.
' 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!?
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).
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.
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
' 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!