Board logo

标题: [问题求助] VBS如何实现类似资源管理器选择多个文件的对话框? [打印本页]

作者: hupo510    时间: 2013-3-27 18:21     标题: VBS如何实现类似资源管理器选择多个文件的对话框?

在网上查到可以选择多个文件的对话框,代码如下:
  1. Set objDialog = CreateObject("UserAccounts.CommonDialog")
  2. objDialog.Filter = "All Files|*.*"
  3. objDialog.Flags = &H200
  4. objDialog.FilterIndex = 1
  5. objDialog.InitialDir = "D:\"
  6. objDialog.ShowOpen
  7. Wscript.Echo objDialog.FileName
复制代码
效果如下:
[attach]6217[/attach]

对话框选择区太小,不好查找文件,于是在网上找资料,终于让我找到了,就是在objDialog.Flags = &H200 后面续加一个参数&H80000,使其类似于资源管理器一样打开一个文件的对话框。
代码如下:
  1. Set objDialog = CreateObject("UserAccounts.CommonDialog")
  2. objDialog.Filter = "All Files|*.*"
  3. objDialog.Flags = &H200 or &H80000
  4. objDialog.FilterIndex = 1
  5. objDialog.InitialDir = "D:\"
  6. objDialog.ShowOpen
  7. Wscript.Echo objDialog.FileName
复制代码
打开效果如下:
[attach]6219[/attach]
如图中所示可以进行多选,但问题由来了,我运行了好多次就只能输出类似D:\一样的路径,根本没有文件名,于是我试试打开一个文件,结果又可以正常输出。
不知道这是为什么,突然我注意到用上面一个对话框,当选择多个文件时,文件与文件之间是用"引号隔开的,如图:
[attach]6218[/attach]
而用最上的代码出现的对话框文件名与文件名之间是用空格隔开的,如图:
[attach]6220[/attach]
若我将[attach]6218[/attach]中的引号都人为删除时[attach]6222[/attach]就可以输出[attach]6223[/attach],否则就只会输出[attach]6221[/attach]
于是最主要的问题找到了,但由于我接触VBS才几天,学这个只是想在批处理中嵌套一些VBS完成一定的功能,所以不知道怎么解决这个问题,希望知道怎么解决这个问题的人帮帮忙!谢谢了!
(主要要解决的问题是如何让含有多对引号的变量正常输出)
作者: broly    时间: 2013-3-28 12:54

没有办法。UserAccounts.CommonDialog控件不支持多文件名输出的,FileName不是集合而是一个属性




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2