VBScript, чтобы открыть диалоговое окно для выбора директории

в настоящее время я открываю файл с моим vbscript следующим образом:

strFile = "C:Userstestfile.txt"
Set objFile = objFSO.OpenTextFile(strFile)

Я хотел бы изменить это, чтобы пользователь мог выбрать/перейти к файлу, и этот файл используется в скрипте. Как я могу добавить эту возможность? Я попытался найти, как загрузить диалоговое окно файла/запросить пользователя для файла и т. д. просто не уверен, как завершить в VBScript.

2 ответов


есть еще одно решение, которое я нашел интересным из MS TechNet меньше настройки, но получает то, что вы хотели достичь. Возвращает полный путь к выбранному файлу.

Set wShell=CreateObject("WScript.Shell")
Set oExec=wShell.Exec("mshta.exe ""about:<input type=file id=FILE><script>FILE.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>""")
sFileSelected = oExec.StdOut.ReadLine
wscript.echo sFileSelected

здесь вы идете:

http://www.robvanderwoude.com/vbstech_ui_fileopen.php

strFile = GetFileName("C:\Users\test\", "Text files|*.txt")
Set objFile = objFSO.OpenTextFile(strFile)

Function GetFileName( myDir, myFilter )
  ' Written by Rob van der Woude
  ' http://www.robvanderwoude.com

  ' Standard housekeeping
  Dim objDialog

  ' Create a dialog object
  Set objDialog = CreateObject( "UserAccounts.CommonDialog" )

  ' Check arguments and use defaults when necessary
  If myDir = "" Then
    ' Default initial folder is "My Documents"
    objDialog.InitialDir = CreateObject( "WScript.Shell" ).SpecialFolders( "MyDocuments" )
  Else
    ' Use the specified initial folder
    objDialog.InitialDir = myDir
  End If
  If myFilter = "" Then
    ' Default file filter is "All files"
    objDialog.Filter = "All files|*.*"
  Else
    ' Use the specified file filter
    objDialog.Filter = myFilter
  End If

  ' Open the dialog and return the selected file name
  If objDialog.ShowOpen Then
    GetFileName = objDialog.FileName
  Else
    GetFileName = ""
  End If
End Function