Desktop-Icon
Hallo zusammen,
eine vermutlich einfache Frage, die mich aber zur Weißglut bringt:
ich habe eine Programmverknüpfung (EXCEL-Basiert) auf dem Desktop liegen mit einem selbst erstellten Icon.
Nun soll eine neue Versoin mit einem neuen Icon auf dem Desktop plaziert werden.
Die Aktualisierung erfolgt über eine Batch-Datei.
Aber nach der aktualisierung erscheint immernoch das alte Symbol für die Verknüpfung.
Hier der Text aus der Batch-Datei:
@echo off & setlocal
::Löschen von dem Ordner KnowledgeMapping, falls dieser existiert
if exist "c:\KnowledgeMapping" rmdir /s /Q "c:\KnowledgeMapping"
if exist "%userprofile%\desktop\KnowledgeMapping.lnk" del "%userprofile%\desktop\KnowledgeMapping.lnk"
::Löschen von dem Ordner Portal, falls dieser existiert
if exist "c:\Portal" rmdir /s /Q "c:\Portal"
if exist "%userprofile%\desktop\c:\Portal.lnk" del "%userprofile%\desktop\c:\Portal.lnk"
::erstellen von dem Ordner Portal, falls dieser noch nicht existiert
if not exist "c:\Portal" md "c:\Portal"
::kopieren der Dateien von Netzlaufwerk nach C:\Portal\
robocopy "\\ITFS1001\Netzlaufwerk\Portal\Setup" "C:\Portal" /MIR
::Desktop als Zielpfad für Verknüpfung
set "zielpfad=%userprofile%\Desktop"
::Name der Verknüpfung (ohne ".lnk")
set "progtitel=Portal"
::Speicherort der Programmdatei
set "progdir=C:\Portal\"
::Name der auszuführenden Programmdatei
set "progexe=Portal.xlsm"
::Beschreibung des auszuführenden Programms
set "beschreibung=Portal
::Bei Bedarf Speicherordner der Verknüpfung erstellen (siehe oben "zielpfad"):
if not exist "%zielpfad%" md "%zielpfad%"
::temporäres VBScript erzeugen ...
echo Set objShell=WScript.CreateObject("Wscript.Shell")>%temp%\MakeShortCut.vbs
echo Set objShortcut=objShell.CreateShortcut("%zielpfad%\%progtitel%.lnk")>>%temp%\MakeShortCut.vbs
echo objShortcut.TargetPath="%progdir%\%progexe%">>%temp%\MakeShortCut.vbs
echo objShortcut.Description="%beschreibung%">>%temp%\MakeShortCut.vbs
echo objShortcut.WorkingDirectory="%progdir%">>%temp%\MakeShortCut.vbs
echo objShortcut.IconLocation = "C:\Portal\favicon.ico,0">>%temp%\MakeShortCut.vbs
echo objShortcut.Save>>%temp%\MakeShortCut.vbs
::... ausführen ...
cscript //nologo %temp%\MakeShortCut.vbs
::... und wieder löschen.
del %temp%\MakeShortCut.vbs
if exist "Portal Setup.zip" del "Portal Setup.zip"
if exist "Portal Setup.bat" del "Portal Setup.bat"
Hat jemand eine Idee? Vielen Dank im Voraus!
VG
herting
eine vermutlich einfache Frage, die mich aber zur Weißglut bringt:
ich habe eine Programmverknüpfung (EXCEL-Basiert) auf dem Desktop liegen mit einem selbst erstellten Icon.
Nun soll eine neue Versoin mit einem neuen Icon auf dem Desktop plaziert werden.
Die Aktualisierung erfolgt über eine Batch-Datei.
Aber nach der aktualisierung erscheint immernoch das alte Symbol für die Verknüpfung.
Hier der Text aus der Batch-Datei:
@echo off & setlocal
::Löschen von dem Ordner KnowledgeMapping, falls dieser existiert
if exist "c:\KnowledgeMapping" rmdir /s /Q "c:\KnowledgeMapping"
if exist "%userprofile%\desktop\KnowledgeMapping.lnk" del "%userprofile%\desktop\KnowledgeMapping.lnk"
::Löschen von dem Ordner Portal, falls dieser existiert
if exist "c:\Portal" rmdir /s /Q "c:\Portal"
if exist "%userprofile%\desktop\c:\Portal.lnk" del "%userprofile%\desktop\c:\Portal.lnk"
::erstellen von dem Ordner Portal, falls dieser noch nicht existiert
if not exist "c:\Portal" md "c:\Portal"
::kopieren der Dateien von Netzlaufwerk nach C:\Portal\
robocopy "\\ITFS1001\Netzlaufwerk\Portal\Setup" "C:\Portal" /MIR
::Desktop als Zielpfad für Verknüpfung
set "zielpfad=%userprofile%\Desktop"
::Name der Verknüpfung (ohne ".lnk")
set "progtitel=Portal"
::Speicherort der Programmdatei
set "progdir=C:\Portal\"
::Name der auszuführenden Programmdatei
set "progexe=Portal.xlsm"
::Beschreibung des auszuführenden Programms
set "beschreibung=Portal
::Bei Bedarf Speicherordner der Verknüpfung erstellen (siehe oben "zielpfad"):
if not exist "%zielpfad%" md "%zielpfad%"
::temporäres VBScript erzeugen ...
echo Set objShell=WScript.CreateObject("Wscript.Shell")>%temp%\MakeShortCut.vbs
echo Set objShortcut=objShell.CreateShortcut("%zielpfad%\%progtitel%.lnk")>>%temp%\MakeShortCut.vbs
echo objShortcut.TargetPath="%progdir%\%progexe%">>%temp%\MakeShortCut.vbs
echo objShortcut.Description="%beschreibung%">>%temp%\MakeShortCut.vbs
echo objShortcut.WorkingDirectory="%progdir%">>%temp%\MakeShortCut.vbs
echo objShortcut.IconLocation = "C:\Portal\favicon.ico,0">>%temp%\MakeShortCut.vbs
echo objShortcut.Save>>%temp%\MakeShortCut.vbs
::... ausführen ...
cscript //nologo %temp%\MakeShortCut.vbs
::... und wieder löschen.
del %temp%\MakeShortCut.vbs
if exist "Portal Setup.zip" del "Portal Setup.zip"
if exist "Portal Setup.bat" del "Portal Setup.bat"
Hat jemand eine Idee? Vielen Dank im Voraus!
VG
herting
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 259106
Url: https://administrator.de/forum/desktop-icon-259106.html
Ausgedruckt am: 19.04.2025 um 04:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo hertingo, willkommen im Forum.
Korrigiere das mal und teste erneut.
Falls das nicht hilft, gib dem System die Chance zu realisieren, dass die Verknüpfung neu ist. Z.B. indem du zwischen Löschen und Neuerstellung ein
setzt.
Andere Möglichkeit die du testen könntest wäre, zuerst die neue Verknüpfung mit einem anderen Name zu erstellen, danach die alte löschen und dann die neue umbenennen.
Grüße
rubberman
if exist "%userprofile%\desktop\c:\Portal.lnk" del "%userprofile%\desktop\c:\Portal.lnk"
So ein Pfad kann nicht existieren. Ich gehe davon aus, dass das c:\ zu viel ist.Korrigiere das mal und teste erneut.
Falls das nicht hilft, gib dem System die Chance zu realisieren, dass die Verknüpfung neu ist. Z.B. indem du zwischen Löschen und Neuerstellung ein
>nul timeout /t 2 /nobreak
Andere Möglichkeit die du testen könntest wäre, zuerst die neue Verknüpfung mit einem anderen Name zu erstellen, danach die alte löschen und dann die neue umbenennen.
Grüße
rubberman
Hi!
ISt zwar schon gelöst, aber wenn du die Verknüpfung für mehrere Profile bereitstellen willst solltest du die direkt in des Public.Desktop-Folder stellen. Der wird von allen Profilen verwendet. Dazu brauchst du zwar Adminrechte, aber du hast kein Problem mit nicht aktualisierten Verknüpfungen in einzelnen Profilen.
Wir mache das z.B. so per VBScript:
zuerst den Public-Desktop-Pfad über die Registry ermitteln (der sichere Weg unter Windows (Xp, Vista, usw.)
und anschließend die Verknüpfung anlegen (die OS-Architektur muss berücksichtig werden):
Grüße
Mayho
ISt zwar schon gelöst, aber wenn du die Verknüpfung für mehrere Profile bereitstellen willst solltest du die direkt in des Public.Desktop-Folder stellen. Der wird von allen Profilen verwendet. Dazu brauchst du zwar Adminrechte, aber du hast kein Problem mit nicht aktualisierten Verknüpfungen in einzelnen Profilen.
Wir mache das z.B. so per VBScript:
zuerst den Public-Desktop-Pfad über die Registry ermitteln (der sichere Weg unter Windows (Xp, Vista, usw.)
Dim objShell : Set objShell = CreateObject("Wscript.Shell")
AllUsersDesktop = objshell.RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Desktop")
und anschließend die Verknüpfung anlegen (die OS-Architektur muss berücksichtig werden):
Set oLink = objshell.CreateShortCut(AllUsersDesktop & "\meineVerknüpfung.lnk")
olink.TargetPath = """C:\Program Files (x86)\Microsoft Office\Office15\excel.EXE"""
olink.WindowStyle = 4
oLink.IconLocation = "C:\Program Files (x86)\Microsoft Office\Office15\excel.EXE,0"
oLink.WorkingDirectory = """C:\Program Files (x86)\Microsoft Office\Office15"""
oLink.Save
Set oLink = Nothing
Grüße
Mayho