![为什么这会更改映射驱动器 M 和 G 上的名称,而不仅仅是 M](https://linux22.com/image/1588568/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%99%E4%BC%9A%E6%9B%B4%E6%94%B9%E6%98%A0%E5%B0%84%E9%A9%B1%E5%8A%A8%E5%99%A8%20M%20%E5%92%8C%20G%20%E4%B8%8A%E7%9A%84%E5%90%8D%E7%A7%B0%EF%BC%8C%E8%80%8C%E4%B8%8D%E4%BB%85%E4%BB%85%E6%98%AF%20M.png)
我根据此处的答案编写了这个 vbs(包含在下面):使用.bat 脚本覆盖映射驱动器名称?
正如我的标题所述,此代码正在更新驱动器 M 和 G 的标签,但应该只更新驱动器 M。两者都转到适当的(不同)位置。
' rename network map.vbs
' VBScript to map a network drive.
' Authors Guy Thomas and Barry Maybury
' Version 1.4 – April 2010
' April 2019, Gary Baddorf - function-ized it
' —————————————-
Option Explicit
NameDrive "\\ad.hs.net\shared", "M:", "CH (\\ad.hs.net\shared\)"
WScript.Quit
Sub NameDrive(strRemotePath, strDriveLetter, strNewName)
Dim objNetwork, objShell, err
Set objShell = CreateObject("Shell.Application")
Set objNetwork = CreateObject("WScript.Network")
' Section to map the network drive
On Error Resume Next
objNetwork.RemoveNetworkDrive strDriveLetter
If Err.Number <> 0 Then
WScript.Echo "Error: " & Err.Description
Err.Clear
End If
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath
' Section which actually (re)names the Mapped Drive
objShell.NameSpace(strDriveLetter).Self.Name = strNewName
Wscript.Echo "Check "& strDriveLetter & " for " & strNewName
objNetwork.Dispose()
objNetwork = Nothing
objShell.Dispose()
objShell = Nothing
End Sub
请注意,我可以在此行中切换,但它不执行任何操作:
NameDrive "\\ad.hs.net\shared", "G:", "CH2"
附加信息。我可以在注册表编辑器中查看每个网络路径的 MountPoints2,并且每个驱动器的 _LabelFromReg 值都是正确的。我还删除了它们并再次运行脚本,但没有成功。
答案1
出现此问题并放弃后不久,我重新启动了计算机。当然,驱动器现在有了正确的名称。我不会再弄乱它,看看再次运行脚本是否会遇到相同的问题。我觉得自己很愚蠢,没有早点重新启动,但在使用net use
或注册表编辑时,这对我来说从来都不是问题。