编辑

编辑

在 Vista/7 中,如果我尝试使用以下命令删除快捷方式 -:

del "%allusersprofile%\Desktop\MyShortcut.lnk"

...Windows 认为该文件夹是空的,因此不会删除该文件。

环境变量“allusersprofile”指向“C:\ProgramData”,但“Desktop”实际上是指向 C:\Users\Public\Desktop 文件夹的软符号链接。

问题似乎是这些软链接只是 Windows 资源管理器的快捷方式,并且无法被 cmd 提示符或批处理文件识别。

我能看到的唯一解决方案是执行以下操作:

经验值:

del "%allusersprofile%\Desktop\MyShortcut.lnk"

Vista/7:

del "%PUBLIC%\Desktop\MyShortcut.lnk"

这两个操作系统有没有什么通用的解决方案?

答案1

正如加勒特(Garrett)在该问题的评论中所述,我看到的唯一解决方案如下:

SET Version=XP

VER | FINDSTR /IL "6.1." > NUL
IF %ERRORLEVEL% EQU 0 SET Version=7

IF %Version% EQU 7  (
 del "%PUBLIC%\Desktop\MyShortcut.lnk"
)
IF %Version% EQU XP  (
 del "%allusersprofile%\Desktop\MyShortcut.lnk"
)

有人可能会注意到,根据这个堆栈溢出问题,以及博客文章由 Raymond Chen 撰写的dir应该%allusersprofile%\Desktop\<directory>在 XP 和 7 上都能给出正确的结果,但是根据我的经验,事实并非如此。

答案2

您没有指定脚本类型(VBS 还是 BAT),但这里有一个与系统无关的 VB 脚本。不是我的脚本,是我提取的来自这个微软网站。根据该页面,它已被验证可以在 Windows 2000、XP、Vista 和 7 上运行。

'''''''''''''''''''''''''''''''''' 
'  
' This VB script removes the requested desktop shortcuts 
'  
' Change only the file name (test.lnk) 
' 
' Script created by Holger Habermehl. October 23, 2012  
'''''''''''''''''''''''''''''''''' 
Set Shell = CreateObject("WScript.Shell") 
Set FSO = CreateObject("Scripting.FileSystemObject") 
DesktopPath = Shell.SpecialFolders("Desktop")
FSO.DeleteFile DesktopPath & "\test.lnk"

编辑

上述代码将查看特定用户的桌面(即用户名“john”登录时,代码将查看“C:\Users\john\Desktop\”或“C:\Documents and Settings\john\Desktop”)。如果要检查公共桌面,请将以下行更改为

DesktopPath = Shell.SpecialFolders("Desktop")

DesktopPath = Shell.SpecialFolders("AllUsersDesktop")

但请注意,根据用户的权限以及运行脚本的时间,他们可能会收到一个 UAC 框,要求以管理员身份登录 Windows Vista/7。我会在 GPO 中将该脚本作为计算机启动脚本运行。

答案3

这在 win7 中有效。

我还没有在 XP 中尝试过但我认为它应该可以工作。

    del "%HOMEDRIVE%%HOMEPATH%\Desktop\test.lnk"

将其保存为批处理文件并正常运行。如果您的帐户没有管理员权限,您可能需要右键单击并选择“以管理员身份运行”。您也可以打开 cmd 并将其作为命令输入。

答案4

这里的建议很好,对我的情况很有帮助。

  1. 我创建了一个批处理文件来删除快捷方式

fixme.bat 包含以下 3 行:

删除“C:\Users\Public\Desktop\gVim 7.4.lnk”
del "C:\Users\Public\Desktop\Cygwin64 Terminal.lnk"
暂停
  1. 右键单击批处理文件以弹出菜单。

  2. 选择“以提升的权限运行”,输入您的密码。

成功。

您也可以尝试“以管理员身份运行”。

祝你好运!

相关内容