当前位置: 首页 > 图文教程 > 脚本技术 > VBScript > 用vbs实现的确定共享文件夹的本地路径?

VBScript
VBS中SendKeys的基本应用
VBScript教程 第十四课在VBScript中使用对象
VBScript教程 第十三课 VBScript与窗体
VBScript教程 第十二课VBScript页面的简单样例
VBScript教程 第十一课深入VBScript
VBScript教程 第十课 VBScript编码约定
VBScript教程 第九课VBScript过程
VBScript教程 第八课 使用循环语句
VBScript教程 第七课使用条件语句
VBScript教程 第六课VBScript运算符
VBscript教程 第五课 VBScript常数
VBScript教程 第四课VBScript变量
VBScript教程 第三课VBScript数据类型
VBScript教程 第二课在HTML页面中添加VBscript代码
VBScript教程 第一课什么是VBScript
VBScript的入门学习资料
VBScript语法速查及实例说明
MsgBox函数语言参考
VBS教程:正则表达式简介 -后向引用
VBS教程:正则表达式简介 -选择与编组

VBScript 中的 用vbs实现的确定共享文件夹的本地路径?


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 218 ::
收藏到网摘: n/a

如何确定共享文件夹的本地路径?
问:
您好,脚本专家!如果有 UNC 路径(例如 \\server1\test),可以使用脚本确定共享文件夹(例如 C:\Scripts\Test 文件夹)的本地路径吗?
-- JVK
答:
您好,JVK。是的,您说得没错
噢,对了;我们几乎忘了。您能使用脚本确定共享文件夹的本地路径吗?您当然可以(尽管我们不知道为什么在棒球赛季期间还有人有闲心做这些)。但如果这确实是您想要做的,那么这就告诉您该如何去做:
复制代码 代码如下:

strPath = "\\atl-fs-01\public"
strPath = Replace(strPath, "\\", "")
arrPath = Split(strPath, "\")
strComputer = arrPath(0)
strShare = arrPath(1)
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_Share Where Name = '" & strShare & "'")
For Each objItem in colItems
Wscript.Echo objItem.Path
Next

正如您所见,我们首先使用了一个典型 UNC 路径:\\atl-fs-01\public。顺便提一下,我们将该路径存储在名为 strPath 的变量中。有了这个路径名称之后,我们必须做两件事。首先,我们必须将计算机名称 (atl-fs-01) 与共享名称 (public) 分开。之后,我们必须连接到计算机 atl-fs-01,确定 public 文件夹的本地路径。那将会有多难?一点也不难。
特别是对于我们这些刚刚设法战胜了“无敌”对手的脚本编写者。我们还没说吧?最后得分是 4 比 2,尽管我们打得不那么好。肯定是教练非常好 …
让我们言归正传吧。首先,我们必须去掉 UNC 路径之前的 \\。虽然还有其他若干方法,我们只需使用 Replace 函数将出现的每个 \\ 替换为空内容:
strPath = Replace(strPath, "\\", "")
执行这行代码后,变量 strPath 将等于 atl-fs-01\public。这意味着,我们可以使用 Split 函数将此值分成数组:
arrPath = Split(strPath, "\")
根据 \ 进行分离后,我们最终得到由两项数据组成的数组:
? atl-fs-01
? public
不用说,这就是我们要找的两条信息:计算机名称和共享文件夹名称。明确这一点后,我们将数组中的第一项(项 0)赋给名为 strComputer 的变量,将第二项(项 1)赋给名为 strShare 的变量:
strComputer = arrPath(0)
strShare = arrPath(1)
那么,现在我们是不是到了比较困难的部分?不管您相信与否,这正是比较困难的部分;在这以后,我们只需使用标准的 WMI 脚本。我们首先连接到远程计算机上的 WMI 服务。(哪个远程计算机?就是 Atl-fs-01,该计算机的名称存储在名为 strComputer 的变量中。)然后,我们使用 ExecQuery 方法检索该计算机上的所有共享文件夹的集合:
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_Share Where Name = '" & strShare & "'")
好主意:我们没有获得所有共享文件夹,对吗?相反,我们只获得了 Name 属性等于 strShare 变量的值的那些共享文件夹。(在您打一会盹的功夫,strShare 等于 public,也就是我们所要的共享文件夹名称。)接下来要做的就是建立一个 For Each 循环来遍历集合(因为在一台计算机上的共享文件夹名称必须唯一,所以该集合中将只有一项),然后回显 Path 属性的值。您可能已经猜到了,Path 属性告诉我们 atl-fs-01 上的文件夹的本地路径:
D:\Scripts\Public
这就是您要获得一个 UNC 路径并确定本地文件夹路径需要做的一切。