web-dev-qa-db-ja.com

バッチファイル-すべてのユーザーのデスクトップからショートカットを削除

Vista/7で、次のコマンドを使用してショートカットを削除しようとすると-:

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

... Windowsはこのフォルダを空と見なし、ファイルを削除しません。

環境変数「allusersprofile」は「C:\ ProgramData」を指しますが、「デスクトップ」は実際にはC:\ Users\Public\Desktopフォルダーへのソフトシンボリックリンクです。

問題は、これらのソフトリンクが単なるウィンドウエクスプローラーのショートカットであり、cmdプロンプトやバッチファイルによって認識されないことであるようです。

私が見ることができる唯一の解決策は、以下を実行することです-:

XP:

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

Vista/7:

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

両方のOSに共通の解決策はありますか?

3
Damien

この質問のコメントでギャレットが述べたように、私が見る唯一の解決策は次のとおりです。

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

この StackOverflow の質問、および blog post by Raymond Chenによると、dir%allusersprofile%\Desktop\<directory>は、XPと7の両方で適切な結果をもたらすはずですが、私の経験ではそうではありません。

5
PenguinCoder

スクリプトの種類(VBSとBAT)を指定していませんが、ここにVBシステムに依存しないスクリプトがあります。私のスクリプトではなく、プルしました このMicrosoftから) site 。そのページによると、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")

ただし、ユーザーの権限によっては、スクリプトを実行すると、Windows Vista/7で管理者としてサインインするように求めるUACボックスが表示される場合があることに注意してください。スクリプトをGPOで、コンピューターの起動スクリプトとして実行します。

2
Slicktrick

これはwin7で機能します。

XPで試すことができませんでしたが、うまくいくはずです。

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

バッチファイルとして保存し、通常どおり実行します。アカウントに管理者権限がない場合は、右クリックして[管理者として実行]を選択する必要があります。 cmdを開いて、コマンドとして入力することもできます。

1

私のシナリオを助けたここでの良いアドバイス。

  1. ショートカットを削除するバッチファイルを作成しました

fixme.batには、次の3行が含まれています。

 del "C:\ Users\Public\Desktop\gVim 7.4.lnk" 
 del "C:\ Users\Public\Desktop\Cygwin64 Terminal.lnk" 
 pause 
  1. バッチファイルを右マウスクリックしてメニューをポップアップします。

  2. 「昇格された特権の実行」を選択し、パスワードを入力します。

成功。

「管理者として実行」を試すこともできます。

幸運を!

0
Gooofy