假设在登录批次之前有
net use Z: \\OldServer\OldShare
并且用户在他们的桌面或桌面的子目录中创建了此共享上的文件/目录的快捷方式。
快捷方式文件始终包含 - 带有驱动器号的文件路径以及带有服务器和共享名称的 UNC 路径。
在桌面目录及其所有子目录 *.lnk 文件中找到一个简单的批处理文件,其中包含\\OldServer\OldShare
和删除所有找到的快捷方式文件是
@echo off
for /F "usebackq delims=" %%F in ( `%SystemRoot%\system32\findstr.exe /I /M /S "\\\\OldServer\\OldShare" "%USERPROFILE%\Desktop\*.lnk"` ) do (
echo Deleting shortcut file "%%F"
del "%%F"
)
有关/I /M /S
在命令提示符窗口中运行的详细信息findstr /?
可以看出,查找字符串中的每个反斜杠必须再用一个反斜杠进行转义。
也可以搜索"Z:\\"
而不是"\\\\OldServer\\OldShare"
但要小心删除仅基于驱动器号的 *.lnk 文件,因为用户可能已将不同的共享映射到此驱动器号。如果他们的快捷方式也被删除,这些用户也不会高兴。
批处理文件可能会在删除每个找到的包含不再存在驱动器的驱动器号的快捷方式之前要求用户确认:
@echo off
cls
echo Searching for shortcuts to drive Z: ...
setlocal ENABLEDELAYEDEXPANSION
for /F "usebackq delims=" %%F in ( `%SystemRoot%\system32\findstr.exe /I /M /S "Z:\\" "%USERPROFILE%\Desktop\*.lnk"` ) do (
echo.
echo Shortcut "%%~nF" might be not valid anymore.
echo.
set Confirm=
set /p "Confirm=Delete the shortcut (y/n)? "
if /i "!Confirm!"=="y" (
attrib -R "%%F"
del "%%F"
)
)
endlocal
如果使用类似的命令进行网络驱动器映射是没有问题的
net use Z: \\MyServer\MyShare
在每次登录时在登录批处理文件中完成。如果驱动器号 Z: 已被使用,则输出错误消息net use
,例如,如果网络驱动器映射已持久完成并且用户首先在没有网络连接的情况下启动计算机,然后插入网络电缆,然后在几秒钟后插入输入用户名和密码以登录 Windows 和公司的域服务器。
可以使用
net use Z: /delete 2>nul
net use Z: \\MyServer\MyShare
在将共享映射到驱动器号 Z: 之前,首先删除已经存在的网络驱动器映射。我不建议使用通配符*
,Z:
因为那样会删除用户创建的所有网络驱动器映射。
对于不仅在公司网络中使用的计算机,通常最好通过使用使驱动器映射不持久
net use Z: \\MyServer\MyShare /persistent:no
现在 Windows 不会保存\\MyServer\MyShare
应自动映射到的 Windows 注册表,Z:
因此网络驱动器映射仅适用于当前用户会话。一旦重新启动 Windows 或用户注销,网络驱动器映射将自动删除。