• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >vbs > 用vbs找到映射到共享的所有驱动器并重新映射它们

用vbs找到映射到共享的所有驱动器并重新映射它们

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了无法找到脚本文件vbs,无法找到ospp.vbs,无法找到脚本vbs,无法找到脚本ospp.vbs,无法找到vbs等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问:
您好,脚本专家!如何找到映射到 \\server1\share 的所有启动器,并将它们重新映射到 \\server2\share?

-- H T-S

答:
你好,H T-S。您知道,不久前 Malcolm Gladwell 出版了一本书,书名为《The Tipping Point》。简单来说,该书做出了一种假设:某一事物可能在很长一段时间内被忽略,但是当这种忽略至少达到所谓的引爆点时,这个原来无人问津的事物就会忽然变成一种名副其实的时尚。就好像一夜之间它就从一件您从未听说的事物变得似乎随处可见。

这是个有趣的假设,我们似乎在用于映射和取消映射网络驱动器的脚本上看到了这种现象。我们发布“您好,脚本专家!”专栏已经一年多了,而从未提及网络驱动器,并且似乎没有人注意这个问题。然后,突然之间,关于映射和取消映射网络驱动器的问题纷至沓来。我们在几周前回答了第一个这种问题,现在又来回答另一个问题,我们有一个收件箱全都是其他关于网络驱动器的问题。先是呼啦圈,然后是喇叭裤,现在轮到网络驱动器了。自己去想吧。

那么重新映射网络驱动器如何呢?嗯,不论是好是坏,并没有可以自动重新映射网络驱动器的方法;因此,我们不得不退而求其次找出其他解决方法。但这并不是太槽糕:我们可以找到符合条件的所有驱动器,取消映射这些驱动器,然后将每个驱动器重新映射到新的位置。 

当然,这听起来挺复杂,但实际上很简单。以下脚本可用来查找映射到 \\server1\share 的所有驱动器,并将这些驱动器重新映射到 \\server2\share:

Set objNetwork = CreateObject("Wscript.Network")

Set colDrives = objNetwork.EnumNetworkDrives

For i = 0 to colDrives.Count-1 Step 2
    If colDrives.Item(i + 1) = "\\server1\share" Then
        strDriveLetter = colDrives.Item(i)
        objNetwork.RemoveNetworkDrive strDriveLetter
        objNetwork.MapNetworkDrive strDriveLetter, "\\server2\share"
    End If
Next

该脚本将首先创建 Wscript.Network 对象实例。我们应当注意到了,无论何时当我们要映射或取消映射网络驱动器时,都需要使用 Windows Script Host,这是因为 WMI 没有任何映射或取消映射驱动器的方法。没关系,这只不过意味着我们的脚本必须在本地计算机上运行。通常情况下都不能针对远程计算机来使用 WSH 方法。这是一个您不得不面临的限制。(有一个方法可解决此问题:将该脚本作为登录脚本运行。登录脚本将始终在本地运行。)

创建 Network 对象之后,调用 EnumNetworkDrives 方法,以便返回计算机上的所有已映射网络驱动器的集合:

Set colDrives = objNetwork.EnumNetworkDrives

这将使我们亲眼见到那个被称为已映射网络驱动器集合的奇特的小东西。今天我们就不详细介绍此集合的体系结构了,请参阅关于网络驱动器的上一个专栏。只需说明每个已映射的驱动器实际占用此集合中的两项:第一项为驱动器号,第二项为 UNC 路径。如果计算机上有三个已映射的驱动器,则集合内容将如下所示:

X:
\\server1\share1
Y:
\\server2\share2
Z:
\\server3\share3

这就是我们必须使用看起来这么奇怪的 For Next 循环来遍历集合的原因,此代码行使我们在集合中每隔一项就跳过一项,进而确保我们仅查看各个驱动器号项:

For i = 0 to colDrives.Count-1 Step 2

然后,对于每个驱动器号,我们需要确定相应的 UNC 路径是否为 \\server1\share1。请记住,如果查看集合中的 0 项(集合中的第一项的索引号为 0),则看到的是驱动器号,相应的 UNC 路径将为该索引号 (0) 加 1。因此,我们用如下代码来确定第一个驱动器是否正好被映射到 \\server1\share1:

If colDrives.Item(i + 1) = "\\server1\share" Then

让我们假定就是这样。在这种情况下,我们需要获取驱动器号(0 项),并将该值存储在名为 strDriveLetter 的变量中。然后,调用 RemoveNetworkDrive 方法来取消映射该驱动器,再调用 MapNetworkDrive 方法将同一驱动器号重新映射到新的共享:

objNetwork.MapNetworkDrive strDriveLetter, "\\server2\share"

不,这并不是所谓的“引爆点”,因为您刚刚推翻了试图遵循这一切的想法。我们知道是有点混乱,但这是由于已映射网络驱动器集合的特殊构造方式而造成的。如果这对于您没有任何意义,尽管忽略它好了,您应当看到事情整体上是有逻辑性的。也许,是有点混乱的逻辑,但仍然是逻辑。

因为这一点比较费解,所以我们举了一个最简单的例子:将名为 \\server1\share 的共享重新映射到名为 \\server2\share 的共享。当然还可以将 server1 上的任何共享重新映射到 server2 上任何名称相似的共享。但是这对于今天来说可能有点过多了。但是,如果您感兴趣,只需要让我们知道,我们会在不久以后重新关注此主题。
</div>

您可能想查找下面的文章:

  • 自动复制U盘文件的VBS脚本
  • reg2vbs.vbs 将Reg文件转换为VBS文件保存 脚本之家修正版本
  • vbs复制文件的脚本
  • 批量文件查找替换功能的vbs脚本
  • 用vbs实现随机读取文件的一行内容的脚本
  • 用vbs遍历文件并随机显示的脚本
  • 用vbs找到映射到共享的所有驱动器并重新映射它们
  • 一个可以删除指定天数文件的vbs脚本
  • 使用vbs脚本定时删除N天前的文件

相关文章

  • vbs adox提取数据库表名和列名的类
  • 文本文件分割脚本(VBS)
  • VBS中Run和Exec的区别
  • 用vbscript实现在消息框中显示一个超链接
  • VBS教程:字符集 (0 - 127)
  • VBS教程:运算符-幂运算符 (^)
  • 利用vbs脚本实现设置IE的打印页眉页脚信息
  • 实用vbs提醒小程序
  • 用vbs实现cmd功能的代码
  • 字符ANSI代码查询工具vbs版

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • vbs复制文件的脚本
    • 用vbscript把 Word 文档保存为文本文件的代码
    • VBS教程:在 VBScript 中使用对象
    • vbs实现的汉字转拼音的函数
    • iisvdir.vbs iis虚拟目录管理脚本使用介绍
    • VBS教程:函数-CreateObject 函数
    • vbs 中调用shell.application 简单函数
    • 用VBSrcipt判断是否是日期
    • VBS教程:运算符-运算符(+)
    • QWERTY密码:加密与解密vbs版

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有