2009-02-18 99 views
5

Tôi muốn có thể kết nối với ổ cứng mạng (wifi) từ máy tính xách tay của mình, nhưng chỉ thỉnh thoảng. Nếu tôi sử dụng lệnh "Ánh xạ ổ đĩa mạng" trong trình khám phá WinXP, tôi phải đặt tên và địa chỉ IP của ổ đĩa, sau đó là tên bộ định tuyến và mật khẩu của nó. Quá nhiều để nhớ!script để ánh xạ ổ đĩa mạng

Tôi đang tìm một cách để kịch bản hoạt động này (bằng ngôn ngữ bất kỳ), một cái gì đó như:.

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

Tôi không đặc biệt quan tâm những gì ngôn ngữ kịch bản được viết bằng BTW, tôi nhận thức của DOS 'subst' lệnh, nhưng tôi không nghĩ rằng tôi có thể sử dụng trong trường hợp này vì bảo vệ mật khẩu.

Trả lời

24

sử dụng net use lệnh:

net use Z: \\10.0.1.1\DRIVENAME 

Sửa 1: Ngoài ra, tôi tin rằng mật khẩu sẽ được đơn giản nối:

net use Z: \\10.0.1.1\DRIVENAME PASSWORD 

Bạn có thể tìm hiểu thêm về lệnh này và đối số của nó qua:

net use ? 

Chỉnh sửa 2: Như Tomalak nêu trong ý kiến, bạn có thể sau đó bỏ bản đồ nó thông qua

net use Z: \delete 
+1

Và để ngắt kết nối, tùy chọn xóa được đặt tên gây nhầm lẫn "sử dụng net z:/delete" –

+0

Mật khẩu không thể đơn giản được nối thêm, chỉ tên người dùng mới có thể. – Tomalak

+1

trong "sử dụng ròng", nó nói: NET USE [devicename | *] [\\ computername \ sharename [\ volume] [mật khẩu | *]] ... Việc thêm mật khẩu có khoảng trống sẽ hoạt động theo tài liệu. – Mike

11

Điều này không hoạt động (giả sử "ROUTERNAME" được người dùng đặt tên cho router mong đợi)?

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

Ngoài ra, bạn có thể sử dụng sử dụng một VBScript nhỏ:

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 
+0

+1 Làm việc tuyệt vời cho tôi! – JohnB

3

Tại sao không lập bản đồ ổ đĩa mạng nhưng bỏ chọn "Reconnect at logon"? Biến tần sẽ chỉ kết nối khi bạn cố truy cập nó. Lưu ý rằng một số ứng dụng sẽ không thành công nếu chúng trỏ đến nó, nhưng nếu bạn đang truy cập các tệp trực tiếp thông qua Windows Explorer thì nó sẽ hoạt động tốt.

4

Tomalak's câu trả lời làm việc rất lớn đối với tôi (+1)

Tôi chỉ cần thiết để làm thay đổi nó một chút cho các mục đích của tôi, và tôi không cần mật khẩu - đó là cho tên miền của công ty:

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

Hoặc nếu bạn muốn ngắt kết nối ổ đĩa:

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

Dưới đây là một biến thể của 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); 
    } 
} 
Các vấn đề liên quan