1

我一直在努力清理凌乱的 Active Directory 以及处于相同状态的网络文件系统,并且我了解映射用户网络驱动器的概念,并且目前使用批处理和 vbs 文件的组合来执行此操作。但是,我需要重新开始,并且想知道是否有任何方法可以检测和删除桌面上与以前的网络驱动器相关联的用户快捷方式。(是的 - 我了解如何删除所有网络驱动器,但是:如何检测和删除桌面上与其关联的快捷方式?)

我已经编写并定制了自己的脚本来映射驱动器和放置快捷方式。我只需要摆脱任何旧的快捷方式。我也不能删除桌面上的所有 .ink 文件。仅与预先存在的网络驱动器相关联。

我在 XP / Server 2003 客户端/服务器环境中工作。

另一个问题:如果每次用户通过域登录时都会运行一个脚本并一遍又一遍地添加相同的网络共享而不首先删除它们,(即使它每次都是相同的脚本)它会/做它 - 做有什么害处吗?<- 我还没有对此进行大量研究,因为我一直在通过 Google 爬行,并通过 Stack 进行了一次高峰查看,以尝试为第一个问题/问题找到解决方案。

任何帮助/建议将不胜感激。谢谢!

4

1 回答 1

0

假设在登录批次之前有

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 或用户注销,网络驱动器映射将自动删除。

于 2014-07-15T11:45:44.803 回答