【问题标题】:Deleting Desktop Shortcuts Associated With Network Drives?删除与网络驱动器关联的桌面快捷方式?
【发布时间】:2014-09-02 11:39:15
【问题描述】:

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

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

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

另一个问题:如果每次用户通过域登录时都会运行一个脚本,并一遍又一遍地添加相同的网络共享而不首先删除它们,(即使每次都是相同的脚本)它会/确实它——有什么害处吗?

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

【问题讨论】:

    标签: batch-file networking shortcuts drives network-shares


    【解决方案1】:

    假设之前在登录批次中有

    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 不会在 Windows 注册表中保存 \\MyServer\MyShare 应自动映射到 Z:,因此网络驱动器映射仅适用于当前用户会话。一旦重新启动 Windows 或用户注销,网络驱动器映射将自动删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      • 2013-03-14
      • 1970-01-01
      相关资源
      最近更新 更多