скрипт для подключения сетевого диска - PullRequest
8 голосов
/ 19 февраля 2009

Я хочу иметь возможность подключаться к (wifi) сетевому жесткому диску с моего ноутбука, но только изредка. Если я использую команду «Подключить сетевой диск» в проводнике WinXP, я должен указать IP-адрес и имя диска, а затем имя маршрутизатора и его пароль. Слишком много, чтобы помнить!

Я ищу способ написания сценария для этого упражнения (на любом языке), например:

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

Меня не особо волнует, на каком языке написан скрипт. Кстати, мне известна команда DOS 'subst', но я не думаю, что смогу использовать ее в этом случае из-за защиты паролем.

Ответы [ 6 ]

27 голосов
/ 19 февраля 2009

используйте команду net use:

net use Z: \\10.0.1.1\DRIVENAME

Редактировать 1: Кроме того, я считаю, что пароль должен быть просто добавлен:

net use Z: \\10.0.1.1\DRIVENAME PASSWORD

Подробнее об этой команде и ее аргументах можно узнать по адресу:

net use ?

Редактировать 2: Как упомянул Томалак в комментариях, вы можете позже отменить отображение через

net use Z: \delete
13 голосов
/ 19 февраля 2009

Не работает ли это (при условии, что "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 голосов
/ 23 июня 2010

Ответ Томалака отлично сработал для меня (+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 голосов
/ 19 февраля 2009

Почему бы не подключить сетевой диск, а отменить выбор «Переподключиться при входе в систему»? Диск будет подключаться только при попытке доступа к нему. Обратите внимание, что некоторые приложения не будут работать, если они укажут на него, но если вы обращаетесь к файлам напрямую через Windows Explorer, это прекрасно работает.

2 голосов
/ 19 февраля 2009

Попробуйте команду net use

1 голос
/ 09 апреля 2015

Здесь JScript-вариант JohnB s answer

// 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...