In Vista/7, if I try to delete a shortcut using the following command -:
del "%allusersprofile%\Desktop\MyShortcut.lnk"...Windows sees this folder as empty and doesn't delete the file.
The environment variable "allusersprofile" points to "C:\ProgramData" however "Desktop" is actually a soft symbolic link to the C:\Users\Public\Desktop folder.
The problem seems to be that these soft links are simply Window Explorer shortcuts and are not recognized by cmd prompts or batch files.
The only solution that I can see is to do the following -:
XP:
del "%allusersprofile%\Desktop\MyShortcut.lnk"Vista/7:
del "%PUBLIC%\Desktop\MyShortcut.lnk"Is there any common solution for both OSes?
14 Answers
As stated by Garrett in comments of this question, the only solution I see is as follows:
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"
)One might note that according to this StackOverflow question, and a blog post by Raymond Chen, a dir of %allusersprofile%\Desktop\<directory> should give the proper results on both XP and 7, however in my experience it does not.
You didn’t specify a type of script (VBS vs. BAT), but here is a VB script that is system agnostic. Not my script, I pulled it from this Microsoft site. According to that page it’s been verified to work on Windows 2000, XP, Vista, and 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"EDIT
The above code will look at the specific user's desktop (i.e. Username "john" logs in, the code will look at "C:\Users\john\Desktop\" or "C:\Documents and Settings\john\Desktop"). If you want to check the public desktop, then change the line that reads
DesktopPath = Shell.SpecialFolders("Desktop")to
DesktopPath = Shell.SpecialFolders("AllUsersDesktop")But note that depending on the user's privileges and when you run the script, they may get a UAC box asking to sign in as an admin on Windows Vista/7. I'd run the script in a GPO as a computer startup script.
This works in win7.
I haven't been able to try it in XP but I think it should work.
del "%HOMEDRIVE%%HOMEPATH%\Desktop\test.lnk"Save it as a batch file and run it normally. If your account doesn't have administrator privileges you may need to right-click and select "run as administrator." You could also open cmd and just type it as a command.
3Good advice here which helped with my scenario.
- I created a batch file to remove the short-cuts
fixme.bat contains the following 3 lines:
del "C:\Users\Public\Desktop\gVim 7.4.lnk" del "C:\Users\Public\Desktop\Cygwin64 Terminal.lnk" pause
Right-mouse click on the batch file to pop-up the menu.
Select "Run Elevated Privileges", enter your password.
Success.
You may also try "Run as administrator".
Good luck!
1