映射网络驱动器的脚本

9

我希望能够偶尔连接到我的笔记本电脑上的(wifi)网络硬盘。如果我使用WinXP资源管理器中的“映射网络驱动器”命令,我必须输入驱动器的IP地址和名称,然后是路由器名称及其密码。太难记了!

我正在寻找一种编写此类操作脚本的方法(可以使用任何语言),例如:

map Z: \\10.0.1.1\DRIVENAME "ROUTERNAME\PW"

我不特别关心脚本用什么语言编写。顺便说一下,我知道DOS的“subst”命令,但是由于密码保护,我认为在这种情况下无法使用它。

6个回答

31

使用net use命令:

net use Z: \\10.0.1.1\DRIVENAME

编辑 1: 另外,我认为密码应该简单地附加:

net use Z: \\10.0.1.1\DRIVENAME PASSWORD

通过以下方式,您可以了解有关此命令及其参数的更多信息:

net use ?

编辑2:正如Tomalak在评论中提到的那样,您可以稍后通过反映射来取消映射。

net use Z: \delete

1
而要卸载它,则是使用略微令人困惑的名称为“net use z: /delete”的删除选项。 - Martin Beckett
密码不能简单地附加,只能附加用户名。 - Tomalak
3
在“net use?”中,它说:NET USE [设备名称|] [\计算机名\共享名称[\卷标][密码|]]... 根据文档,在密码后加一个空格应该是可行的。 - Mike

13

如果“ROUTERNAME”是路由器期望的用户名,那么这个命令行代码为什么不起作用?

net use Z: "\\10.0.1.1\DRIVENAME" /user:"ROUTERNAME" "PW"

或者您可以使用一个小的VBScript:

Option Explicit
Dim u, p, s, l
Dim Network: Set Network= CreateObject("WScript.Network")

l = "Z:"
s = "\\10.0.1.1\DRIVENAME"

u = "ROUTERNAME"
p = "PW"

Network.MapNetworkDrive l, s, False, u, p

4

Tomalak's的回答对我非常有效(+1)

我只需要稍微修改一下,就可以满足我的需求了,而且我不需要密码 - 这是为公司域名设置的:

Option Explicit
Dim l: l = "Z:"
Dim s: s = "\\10.10.10.1\share"
Dim Network: Set Network = CreateObject("WScript.Network")
Dim CheckDrive: Set CheckDrive = Network.EnumNetworkDrives()
Dim DriveExists: DriveExists = False
Dim i

For i = 0 to CheckDrive.Count - 1
  If CheckDrive.Item(i) = l Then
    DriveExists = True
  End If
Next

If DriveExists = False Then
  Network.MapNetworkDrive l, s, False
Else
  MsgBox l + " Drive already mapped"
End If

或者如果你想断开驱动器:

For i = 0 to CheckDrive.Count - 1
  If CheckDrive.Item(i) = l Then 
    WshNetwork.RemoveNetworkDrive CheckDrive.Item(i)
  End If
Next

3

为什么不映射网络驱动器,但取消选中“重新登录时自动连接”?只有在尝试访问它时,驱动器才会连接。请注意,如果一些应用程序指向它,则会失败,但是如果您直接通过Windows资源管理器访问文件,则效果很棒。


2

1
这是 JohnB答案 的 JScript 变体。
// Below the MSDN page for MapNetworkDrive Method with link and in case if Microsoft breaks it like every now and then the path to the documentation of now.
// https://msdn.microsoft.com/en-us/library/8kst88h6(v=vs.84).aspx
// MSDN Library -> Web Development -> Scripting -> JScript and VBScript -> Windows Scripting -> Windows Script Host -> Reference (Windows Script Host) -> Methods (Windows Script Host) -> MapNetworkDrive Method

var WshNetwork = WScript.CreateObject('WScript.Network');
function localNameInUse(localName) {
    var driveIterator = WshNetwork.EnumNetworkDrives();
    for (var i=0, l=driveIterator.length; i < l; i += 2) {
        if (driveIterator.Item(i) == localName) {
            return true;
        }
    }
    return false;
}

function mount(localName, remoteName) {
    if (localNameInUse(localName)) {
        WScript.Echo('"' + localName + '" drive letter already in use.');
    } else {
        WshNetwork.MapNetworkDrive(localName, remoteName);
    }
}

function unmount(localName) {
    if (localNameInUse(localName)) {
        WshNetwork.RemoveNetworkDrive(localName);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接