Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations bkrike on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

WSH Network Drive Mapping

Status
Not open for further replies.
Oct 27, 2004
32
US
Hi Guys

I wonder if anyone could help me make this script more elegant.
It works fine, but it's cumbersome to say the least. I'm new to Scripting, programming for that matter and would be most grateful if some one could cut this down and still get the same results.
I used the; WshShell.Run "%comspec% /c net use T: \\Server\Share" to get around the issue with 'Remembered Drives'

What I'm trying to achieve;
Users have a set of shares they need to connect to.
These are set at logon via Group Policy
If a user maps a new or incorrect share these get set back to default when they next logon.

I think that this is pretty standard stuff.

Thanks in advance

Jay

'SCRIPT STARTS HERE

'Set Variables Do Not Change!
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set CheckDrive = WshNetwork.EnumNetworkDrives()

'The next two sections disconnect any mapped drives and reconnect the correct drives and shares

'Remove Drives 'D' Through 'Z'
DriveLetter = "D:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "E:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "F:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "G:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "H:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "I:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "J:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "K:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "L:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "M:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "N:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "O:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "P:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "Q:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "R:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "S:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "T:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "U:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "V:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "W:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "X:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "Y:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

DriveLetter = "Z:"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If

'Map network drives to correct share
'Change the drive and share paths depending on the department
WshShell.Run "%comspec% /c net use T: \\Server\Share"
WshShell.Run "%comspec% /c net use S: \\Server\Share"

'Diagnostic Pause. Comment out when not needed.
WScript.Echo "Network Drive Mapping Finished OK!"

'END
 
Hello HelpJayPlz,

Put the drive letters part all in one loop like this.
[tt]
for i=asc("D") to asc("Z")
DriveLetter = chr(i) & ":"
AlreadyConnected = False
For myDrive = 0 To CheckDrive.Count - 1 Step 2
If CheckDrive.Item(myDrive) = DriveLetter Then AlreadyConnected = True
Next
If AlreadyConnected = True Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If
next
[/tt]
regards - tsuji
 
And what about only one loop ?
For myDrive = CheckDrive.Count - 1 To 0 Step -2
DriveLetter = CheckDrive.Item(myDrive)
If Len(DriveLetter) = 2 And DriveLetter >= "D:" And DriveLetter <= "Z:" Then
WshNetwork.RemoveNetworkDrive DriveLetter
End If
Next

Hope This Helps, PH.
Want to get great answers to your Tek-Tips questions? Have a look at FAQ219-2884 or FAQ222-2244
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top