Suchdialog im Skript

Herzlichen Dank für das schöne Skript „Parameterabfrage bei Verknüpfungen“ aus der Hotline-Rubrik der c't 9/04. Gibt es in VBS einen kleinen „Browser“, der mir erlaubt, ein Verzeichnis (möglichst mit einer Vorbelegung) interaktiv auszuwählen und der dessen Pfad dann wie bei der Parameterabfrage zurückgibt?

vorlesen Druckansicht
Lesezeit: 2 Min.

Herzlichen Dank für das schöne Skript „Parameterabfrage bei Verknüpfungen“ aus der Hotline-Rubrik der c't 9/04. Gibt es in VBS einen kleinen „Browser“, der mir erlaubt, ein Verzeichnis (möglichst mit einer Vorbelegung) interaktiv auszuwählen und der dessen Pfad dann wie bei der Parameterabfrage zurückgibt?

Ja, den gibt es. Das Skript sieht dann so wie im Listing unten aus. Der eigentliche Browser-Aufruf steckt in der Methode BrowseForFolders des WScript.Application-Objekts, die ein Objekt vom Typ Shell.Folder zurückliefert. Eine beliebige Vorgabe, wo die Suche nach dem gewünschten Ordner starten soll, gibt es leider nicht; Sie können der Funktion aber ein viertes Argument übergeben, um die Suche beispielsweise auf die eigenen Dateien oder den Windows-Ordner zu beschränken. Eine Liste der möglichen Konstanten ist unter dem Soft-Link zu finden. (hos)

Option Explicit
Dim sh, app, fldr
Dim prg, antwort, arg
Dim i
Set sh = WScript.CreateObject("WScript.Shell")
Set app = WScript.CreateObject ("Shell.Application")
If WScript.Arguments.Count < 1 Then
MsgBox "Kein Programm angegeben", 16, "Fehler"
WScript.Quit
End If
prg = WScript.Arguments(0)
Set fldr = app.BrowseForFolder(0, _
"In welchem Ordner ausfĂĽhren?", 65)
If fldr Is nothing then ' Abbrechen gedrĂĽckt?
WScript.Quit
Else
antwort = fldr.Self.Path
If InStr(antwort, " ") > 0 Then antwort = """" & antwort & """"
End If
For i = 1 to WScript.Arguments.Count - 1
arg = WScript.Arguments(i)
If InStr(arg, " ") > 0 Then arg = """" & arg & """"
prg = prg & " " & arg
Next
sh.CurrentDirectory = antwort
sh.Run prg & " /use " & antwort, 1, false

Mit dem Script Host lässt sich ein per Dialog ausgewähltes Verzeichnis als Parameter an ein Programm übergeben.

(hos)