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