使用VBS浏览本地文件的3种方式,获取完整路径
在VBScript(VBS)中,浏览本地文件并获取完整路径是常见的任务,尤其是在需要用户交互选择文件的情况下。本文将详细介绍三种不同的方法来实现这一功能,适用于不同的操作系统环境。 1. **使用`UserAccounts.CommonDialog`对象(适用于XP)** 在Windows XP系统中,可以利用`UserAccounts.CommonDialog`对象来打开文件选择对话框。创建该对象,设置过滤器以限制用户只能选择特定类型的文件(如文本文件),然后设定初始目录,最后调用`ShowOpen`方法打开对话框。如果用户选择了文件,`FileName`属性将返回所选文件的完整路径。 ```vbs Function BrowseForFile() Set objDialog = CreateObject("UserAccounts.CommonDialog") objDialog.Filter = "txt|*.txt" objDialog.InitialDir = "C:\" intResult = objDialog.ShowOpen If intResult <> 0 Then BrowseForFile = objDialog.FileName Else MsgBox "Error." End If End Function ``` 2. **使用`SAFRCFileDlg.FileOpen`对象(适用于Windows 2003)** 在Windows 2003系统中,可以使用`SAFRCFileDlg.FileOpen`对象来实现相同的功能。创建该对象,调用`OpenFileOpenDlg`方法,然后获取`FileName`属性来获取选择的文件路径。 ```vbs Function SelectAFile Set objDialog = CreateObject("SAFRCFileDlg.FileOpen") intResult = objDialog.OpenFileOpenDlg SelectAFile = objDialog.FileName End Function ``` 3. **使用Internet Explorer对象模拟文件选择对话框(适用于多种环境)** 当前的系统组件可能不支持上述方法,因此可以使用Internet Explorer(IE)对象模拟文件选择对话框。创建一个隐藏的IE实例,写入HTML代码以包含一个文件输入元素,聚焦并点击该元素,然后读取其`value`属性获取文件路径。 ```vbs Function BrowseForFile() Dim objIE, strSelected BrowseForFile = "" Set objIE = CreateObject("InternetExplorer.Application") objIE.ToolBar = False objIE.Resizable = False objIE.StatusBar = False objIE.Width = 300 objIE.Height = 100 objIE.Visible = True objIE.Navigate("about:blank") Do Until objIE.ReadyState = 4 Loop With objIE.Document.ParentWindow.Screen objIE.Left = (.AvailWidth - objIE.Width) \ 4 objIE.Top = (.AvailHeight - objIE.Height) \ 4 End With objIE.Document.Write "<HTML><BODY><INPUT ID=""FileSelect"" NAME=""FileSelect"" TYPE=""file""><BODY></HTML>" With objIE.Document.all.FileSelect .Focus .Click strSelected = .Value End With objIE.Quit Set objIE = Nothing If Trim(strSelected) = "" Then MsgBox "You selected no file." WScript.Quit End If BrowseForFile = strSelected End Function ``` 请注意,上述代码中关于Win7/IE8的注释指出,在这些环境下,返回的路径可能是`C:\fakepath\`,而不是实际路径,这是由于安全策略的改变。在某些情况下,选择快捷方式时,返回的是快捷方式本身的名称而非目标文件的路径。 通过VBS进行文件浏览和获取完整路径的方法取决于操作系统的版本和可用组件。在编写脚本时,确保考虑兼容性问题,并根据实际需求选择最合适的实现方式。尽管某些代码可能在特定环境中无法直接运行,但它们仍然可以作为学习和参考的资源。
- 粉丝: 3
- 资源: 894
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助