web-dev-qa-db-ja.com

ネットワークドライブをマップするスクリプト

ラップトップから(wifi)ネットワークハードドライブに接続したいのですが、たまにしか接続できません。 WinXP Explorerで「ネットワークドライブの割り当て」コマンドを使用する場合、ドライブのIPアドレスと名前、ルーター名とそのパスワードを入力する必要があります。覚えすぎです!

このアクティビティをスクリプト化する方法を探しています(任意の言語で)、次のようなものです。

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

スクリプトがどの言語で書かれているかは特に気にしません。ところで、DOSの 'subst'コマンドは知っていますが、パスワード保護のため、この場合は使用できないと思います。

8
Dónal

使用 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
28
Mike

これは機能しませんか(「ROUTERNAME」はルーターが予期するユーザー名であると想定しています)?

ネット使用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
13
Tomalak

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
4
JohnB

ネットワークドライブをマップせずに、[ログオン時に再接続する]の選択を解除するのはなぜですか?ドライブは、アクセスしようとしたときにのみ接続します。一部のアプリケーションは、それをポイントすると失敗することに注意してください。ただし、Windowsエクスプローラーから直接ファイルにアクセスしている場合は、これがうまく機能します。

3
C. Ross

Net Use コマンドを試す

2
Eric Petroelje

ここでは JohnB のJScriptバリアント 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);
    }
}
1
166_MMX