Arquivo em lote - Excluir atalho do ALLUSERS Desktop

4

No Vista / 7, se eu tentar excluir um atalho usando o seguinte comando -:

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

... O Windows vê essa pasta como vazia e não exclui o arquivo.

A variável de ambiente "allusersprofile" aponta para "C: \ ProgramData", entretanto "Desktop" é na verdade um link simbólico para a pasta C: \ Users \ Public \ Desktop.

O problema parece ser que esses soft links são simplesmente atalhos do Windows Explorer e não são reconhecidos por prompts cmd ou arquivos em lote.

A única solução que consigo ver é fazer o seguinte:

XP:

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

Vista / 7:

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

Existe alguma solução comum para os dois sistemas operacionais?

    
por Damien 28.11.2011 / 03:04

4 respostas

5

Como afirmado por Garrett nos comentários desta questão, a única solução que vejo é a seguinte:

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"
)

Pode-se notar que, de acordo com essa StackOverflow pergunta e uma postagem de blog de Raymond Chen, um dir de %allusersprofile%\Desktop\<directory> deve fornecer o resultados adequados em XP e 7, no entanto, na minha experiência, não.

    
por 25.10.2012 / 15:49
2

Você não especificou um tipo de script (VBS vs. BAT), mas aqui está um script VB independente do sistema. Não meu roteiro, eu o coloquei deste site da Microsoft . De acordo com essa página, verificou-se que funciona no Windows 2000, XP, Vista e 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"

EDITAR

O código acima irá olhar para o desktop do usuário específico (ou seja, o usuário "john" faz o login, o código irá olhar para "C: \ Users \ john \ Desktop \" ou "C: \ Documents and Settings \ john \ Desktop" "). Se você quiser verificar a área de trabalho pública, altere a linha que lê

DesktopPath = Shell.SpecialFolders("Desktop")

para

DesktopPath = Shell.SpecialFolders("AllUsersDesktop")

Mas observe que, dependendo dos privilégios do usuário e quando você executa o script, eles podem obter uma caixa UAC solicitando a entrada como administrador no Windows Vista / 7. Eu executei o script em um GPO como um script de inicialização do computador.

    
por 17.09.2015 / 23:01
0

Bom conselho aqui que ajudou no meu cenário.

  1. Eu criei um arquivo de lote para remover os atalhos

fixme.bat contém as seguintes 3 linhas:

del "C:\Users\Public\Desktop\gVim 7.4.lnk"
del "C:\Users\Public\Desktop\Cygwin64 Terminal.lnk"
pause
  1. Clique com o botão direito do mouse no arquivo de lote para exibir o menu.

  2. Selecione "Executar privilégios elevados" e insira sua senha.

Sucesso.

Você também pode tentar "Executar como administrador".

Boa sorte!

    
por 08.07.2015 / 18:35
0

Isso funciona no win7.

Não consegui experimentar no XP, mas acho que deve funcionar.

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

Salve como um arquivo em lotes e execute-o normalmente. Se sua conta não tiver privilégios de administrador, talvez seja necessário clicar com o botão direito do mouse e selecionar "executar como administrador". Você também pode abrir o cmd e apenas digitá-lo como um comando.

    
por 01.07.2016 / 19:23