使用.bat 脚本覆盖映射驱动器名称?

使用.bat 脚本覆盖映射驱动器名称?

我有以下批处理脚本,它可以为我们的用户成功映射一些驱动器:

@echo off
net use * /delete /yes
net use x: \\192.168.1.52\xrays
net use s: \\192.168.1.52\common
net use p: \\192.168.1.52\public
net use o: \\192.168.1.52\office
net use y: \\192.168.1.52\drives
EXIT

映射驱动器的名称取自共享名称本身。但是,如果我可以将名称改写为对用户更有用的名称,那就非常方便了。

我在网上查看了不少有关 net use 命令示例的文档,但我只能看到凭据等选项,而与命名无关。

该脚本正在 Windows XP 和 Windows 7 工作站上运行。

任何帮助,将不胜感激。

答案1

有一种无需使用 VBScript 即可从命令行执行此操作的方法。您可以使用命令编辑注册表reg add。恕我直言,这样做比使用 VBScript 更改标签更好,因为它不会将标签与驱动器号关联,而是将标签与共享关联。因此,如果最终用户稍后断开连接X:并手动将xrays共享安装到R:驱动器,则标签仍将正确显示(无论您在脚本中将其分配到何处)。

您将要写入的键是HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\子键,它是共享路径,其中所有反斜杠都替换为井号 (#)。

笔记: 我还没有测试如何处理带有空格(甚至是磅号)的共享名称。

@echo off

net use * /delete /yes

:: Set the label in the registry
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##192.168.1.52#xrays /v _LabelFromReg /t REG_SZ /f /d "X-Rays"
:: Map the drive
net use x: \\192.168.1.52\xrays

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##192.168.1.52#common /v _LabelFromReg /t REG_SZ /f /d "Common"
net use s: \\192.168.1.52\common

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##192.168.1.52#public /v _LabelFromReg /t REG_SZ /f /d "Public"
net use p: \\192.168.1.52\public

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##192.168.1.52#office /v _LabelFromReg /t REG_SZ /f /d "Office"
net use o: \\192.168.1.52\office

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##192.168.1.52#drives /v _LabelFromReg /t REG_SZ /f /d "Drives"
net use y: \\192.168.1.52\drives

EXIT

答案2

仅使用命令无法做到这一点net use(请参阅文档),但有一种方法可以使用 vb 脚本来实现,正如 computerperformance.co.uk 的 Guy Thomas 所描述的那样。这里

万一他的网站稍后消失,这里是他的脚本的副本:

' NameDrive.vbs
' VBScript to map a network drive.
' Authors Guy Thomas and Barry Maybury
' Version 1.4 - April 2010
' ----------------------------------------'
'
Option Explicit
Dim objNetwork, strDrive, objShell, objUNC
Dim strRemotePath, strDriveLetter, strNewName
'
strDriveLetter = "W:"
strRemotePath = "\\192.168.1.2\example\sharename"
strNewName = "Example Readable Label"

' Section to map the network drive
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath

' Section which actually (re)names the Mapped Drive
Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(strDriveLetter).Self.Name = strNewName

Wscript.Echo "Check : "& strDriveLetter & " for " & strNewName
WScript.Quit

' End of Example VBScript.

笔记:

  • 如果W:对你不起作用,请尝试W:\(使用斜线)
  • 此方法将设置驱动器号标签永久即如果你稍后将另一个共享连接到同一个驱动器号,那么新股也将获得旧标签。可以通过在连接共享时始终使用此脚本或删除注册表中的某个项以恢复正常行为来解决此问题。

恢复正常行为:

  • 启动 regedit,然后单击Edit(菜单)-> Find->Example Readable Label
  • 或者在 regedit 中导航至HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2->_LabelFromReg
  • 只需删除该值 - 将其留空。结果是未来的驱动器映射将恢复为传统的映射样式。

Guy 的网站上对这一切进行了更详尽的描述。

答案3

@echo off
echo --------------------------delete map drive all------------------------
net use * /delete /yes
echo ------------------create drive --------------------------------
net use m: \\172.16.0.136\Source /user:aleg\masr masr2006*
net use n: \\172.16.0.136\scanner_bat_test /user:alwq\4288044 masr2006*
echo ---------------------------------------------------

EXIT

相关内容